这是一个旧线程,似乎我是唯一一个遇到这种情况的人,但我仍然想分享答案。
WFP 现在是 Maven 项目,构建输出到 /target/classes。
有一个普通的 wtp-tools web 容器 (tomcat) 指向文件系统中的 WAR 文件。
解决方案:我一直使用 VirtualWebappLoader 并为 JarScanner 添加了一个新标志,如下所示:
<!-- 应用jar列表 -->
<Loader
className="org.apache.catalina.loader.VirtualWebappLoader"
virtualClasspath="apptest/target/classes;
customtest/target/classes"/>
<!--
将目录视为扩展 jar。
详情: http: //tomcat.apache.org/tomcat-7.0-doc/config/context.html#Virtual_webapp
-->
<JarScanner scanAllDirectories="true" />
更新
使用 Tomcat 8 的人会注意到VirtualWebappLoader不再存在。所以看看资源。它已被 Pre、Jar 和 Post 资源所取代。
但是,我没有找到合适的方法来按照 Servlet 3.0 规范的要求将带有 META-INF/resources 和 META-INF/web-fragment.xml 的爆炸 Jar 加载到 WEB-INF/lib。
当使用 Tomcat 文档中建议的示例并将爆炸的 Jar 目录映射到 WEB-INF/classes 时,一切似乎都“正常”,但 META-INF/resources 和 web-fragment.xml 声明的元素不可用:
<Resources>
<PreResources
className="org.apache.catalina.webresources.DirResourceSet"
base="/home/reginaldosantos/apptest/target/classes"
webAppMount="/WEB-INF/classes"
/>
</Resources>
然后,将 webAppMount 更改为“/WEB-INF/lib”会在启动时给我一些 ClassNotFoundException。
最后,经过几次尝试,我想出了一个解决方法:
<Resources>
<PreResources
className="org.apache.catalina.webresources.DirResourceSet"
base="/home/reginaldosantos/apptest/target/classes"
webAppMount="/WEB-INF/classes"
/>
<JarResources
className="org.apache.catalina.webresources.DirResourceSet"
base="/home/reginaldosantos/apptest/target/classes/META-INF/resources"
webAppMount="/"
/>
</Resources>
不过不太确定。
希望它对某人有所帮助;-)