我目前正在工作的项目是一个标准的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
被抛出。
在扩展context.xml中的类路径时,有没有办法让嵌入式tomcat和tomcat插件一起工作?
答案 0 :(得分: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