将 Maven 项目部署到 tomcat 服务器

Deploying maven project to tomcat server

我在 Eclipse(webapp 原型)中的 maven 项目有一些问题。我用一个 .jsp 和一个 servlet 编写了一个简单的应用程序。 .jsp 页面工作正常,但访问 servlet 会导致 Class 未找到异常。 我认为问题在于 maven(以及 eclipse)将 servlet class 部署为 Servlet.java 而不是 Servlet.class(在 wtpwebapps > .. > WEB_INF > classes >> 等)。

作为动态 Web 应用程序编写的相同代码工作正常,因为 servlet 由 Eclipse 部署,扩展名为 .class。

我想坚持使用 Maven 项目,所以你能给我一些关于如何解决这个问题的提示吗?

Tomcat 供给 servlet.jar。您需要将其作为 <scope>provided</scope>.

放入 pom.xml

也就是说,Eclipse/Maven 不应将 servlet 部署为 Java class 文件。它是由 Tomcat 提供的完整库,不应编译为单个 class。你打包的*.war文件(webapps下的lib文件夹)绝对不能有2个servlet-api或servlet.jars.

此外,它可能有助于指出抛出的是哪个 ClassNotFoundException。缺少什么 class?因为这听起来像你的 JSP 版本引用了一个 class,它不在自动部署的 servlet-api jar Tomcat7 offers (3.0).

是我的错。我将我的源代码放入 src/main/resources 而不是 src/main/java - 这就是它没有被编译的原因。

我仍然想知道为什么 maven 没有将应用程序部署到 wtpwebapps,但主要问题现在已解决,感谢您的帮助!

如果你 运行 mvn tomcat7:deploy 那么 Maven 正在搜索 运行ning tomcat 服务器,如 pom.xml:

中配置的
<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-guimanager-script.