将maven项目部署到tomcat服务器

时间:2015-07-29 13:57:21

标签: eclipse tomcat7 maven-3

我在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项目,那么你能否给我一些关于如何修复它的提示?

3 个答案:

答案 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}的用户}}

相关问题