我在使用 WAR 模块时遇到了一些问题,并且在加载 taglib 时遇到了困难。我不断收到此异常:
JSPG0047E: 找不到 uri http://www.springframework.org/tags/form 的标记库 在 com.ibm.ws.jsp.translator.visitor.tagfiledep.TagFileDependencyVisitor.visitCustomTagStart(TagFileDependencyVisitor.java:76) 在 com.ibm.ws.jsp.translator.visitor.JspVisitor.processJspElement(JspVisitor.java:366) 在 com.ibm.ws.jsp.translator.visitor.JspVisitor.processChildren(JspVisitor.java:419) 在 com.ibm.ws.jsp.translator.visitor.JspVisitor.processJspElement(JspVisitor.java:369) ...
经过一番搜索,我发现了很多关于spring jars需要在应用程序的类路径上的建议。我检查了我的 EAR 的 lib 文件夹,果然,spring-web 和 spring-webmvc 在那里。
应该注意的是,EAR 是用瘦 WAR 构建的 - 因为它们使用大多数相同的库,所以所有库文件都在MyAppEAR/lib
而不是MyAppEAR/MyWAR1/WEB-INF/lib
, MyAppEAR/MyWAR2/WEB-INF/lib
,MyAppEAR/MyWAR3/WEB-INF/lib
等...
我终于设法解决了这个丢失的 taglib 错误,但我不得不将 spring-web 和 spring-webmvc 移动到MyAppEAR/MyWAR1/WEB-INF/lib
.
所以我有几个问题:
- 这是解决此问题的唯一方法吗?
如果是这样,我如何使用 maven 构建一种瘦 WAR?目前,POM 的 EAR 部分如下所示:
<plugin> <artifactId>maven-ear-plugin</artifactId> <version>2.8</version> <configuration> <applicationName>MyAppEAR</applicationName> <defaultLibBundleDir>lib</defaultLibBundleDir> <skinnyWars>true</skinnyWars>
我想我可以关闭瘦 WAR,然后有一些其他步骤从 WAR 文件中删除所有库,并将它们复制到 MyAppEAR/lib ,除了spring web jar,但我希望有更好的解决方案。