我在Eclipse中的maven项目有一些问题(webapp archetype)。我用一个.jsp和一个servlet写了一个简单的appliaction。 .jsp页面工作正常,但访问servlet会导致Class not found异常。 我认为问题是maven(以及eclipse)将servlet类部署为Servlet.java而不是Servlet.class(在wtpwebapps> ..> WEB_INF>类>>等中)。
编写为动态Web应用程序的相同代码可以正常工作,因为Eclipse使用扩展的.class来部署servlet。
我想坚持使用Maven项目,那么你能否给我一些关于如何修复它的提示?
答案 0 :(得分:1)
Tomcat提供servlet.jar。您需要将其作为<scope>provided</scope>
放在pom.xml中。
话虽这么说,Eclipse / Maven不应该将servlet部署为Java类文件。它是由Tomcat提供的整个库,不应该编译为单个类。绝对不能在打包的* .war文件(webapps下的lib文件夹)中有2个servlet-api或servlet.jars。
此外,它可能有助于注意抛出哪个ClassNotFoundException。缺少什么课?因为听起来你的JSP版本引用的是一个不在自动部署的servlet-api jar中的类,Tomcat7提供了(3.0)。
答案 1 :(得分:1)
这是我的错。我将源代码放入src / main / resources而不是src / main / java - 这就是为什么它没有被编译。
我仍然想知道为什么maven没有将应用程序部署到wtpwebapps,但主要问题现在已经修复,感谢您的帮助!
答案 2 :(得分:1)
如果你运行mvn tomcat7:deploy
,那么maven正在搜索pom.xml中配置的正在运行的tomcat服务器:
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<server>TomcatServer</server>
<username>USERNAME</username>
<password>PASSWORD</password>
<url>http://localhost:8080/manager/text</url>
<path>/training</path>
</configuration>
</plugin>
正如您在url中看到的那样, manager 应用程序被调用进行部署(管理器应用程序默认安装在tomcat中,但 NOT 在eclipse中的tomcat中,因为eclipse使用它自己的tomcat-webapp-folder(wptwebapp))。
无论如何,如果你想在eclipse之外使用这种部署,你必须在 tomcat-users.xml 中创建一个角色为manager-gui
和{{1}的用户}}