1

我目前正在工作的项目是一个标准的 Web 应用程序,并希望使用嵌入式 tomcat (mvn tomcat7:run) 启动它。在 META-INF/context.xml 中有一个条目

<Loader className="org.apache.catalina.loader.VirtualWebappLoader"
        virtualClasspath="${home}/lib"/>  

扩展 Web 应用程序的类路径。

使用 mvn tomcat7 启动 Web 应用程序时:运行很多 ClassNotFoundExceptions,例如

java.lang.ClassNotFoundException: org.apache.catalina.deploy.ServletDef

被抛出。

有没有办法让嵌入式 tomcat 与 tomcat 插件一起工作,同时在 context.xml 中扩展类路径?

4

1 回答 1

4

这个问题的答案是将Tomcat插件设置为使用来自maven的单独的类加载器。这是通过将useSeparateTomcatClassLoader插件的参数设置为 true 来完成的。这可以在 Tomcat 插件配置中完成:

<plugin>
  <groupId>org.apache.tomcat.maven</groupId>
  <artifactId>tomcat7-maven-plugin</artifactId>
  <configuration>
    <contextReloadable>true</contextReloadable>
    <useSeparateTomcatClassLoader>true</useSeparateTomcatClassLoader>
  </configuration>
</plugin>

或在用于启动 Tomcat 插件的命令行上:

mvn tomcat7:run -Dtomcat.useSeparateTomcatClassLoader=true

见:http: //tomcat.apache.org/maven-plugin-2.1/tomcat7-maven-plugin/run-mojo.html

于 2014-06-20T00:27:03.813 回答