gpt4 book ai didi

java - Skinny WAR,EAR : "struts-tags not found" error 中的库

转载 作者:行者123 更新时间:2023-11-30 08:29:31 24 4
gpt4 key购买 nike

在 Java EE 项目中,我将所有库从 WAR/WEB-INF/lib 移动到 EAR/lib

打开一个 JSP,现在我得到这个错误:


Struts has detected an unhandled exception:
Messages:
File "/struts-tags" not found
File: org/apache/jasper/compiler/DefaultErrorHandler.java
Line number: 51

Stacktraces
org.apache.jasper.JasperException: File "/struts-tags" not found
...........
...........

如何解决这个问题?

最佳答案

将库从 WAR 移动到 EAR 可能非常有用,例如如果一个 EAR 中有多个 WAR*,以避免库冗余。
* 注意:在 Struts2 中使用多个 WAR,您可能在某些应用程序服务器中遇到问题:read more on the official documentation .


制作Skinny WAR (没有库的 WAR)工作,条件是:

  1. war 的 META-INF/MANIFEST.MF必须包含链接您的库的类路径属性:

    Class-Path: lib/struts2-core-2.3.15.2.jar 
    lib/xwork-core-2.3.15.2.jar
    lib/all_your_libraries_here...
  2. EAR 的 application.xml必须包含:

    <library-directory>lib</library-directory> .

要在Maven上实现这个条件,不需要在EAR的POM.xml中声明WAR的POM.xml的各个库的依赖,可以使用this amazing trick。 .

也就是说,问题中报告的问题是由 TLD 给出的。查找仅在 WAR 上执行,EAR 超出范围(AFAIK,没有办法在 EAR 中查找 TLD,但我想被证明是错误的)

解决方法:

提取 struts-tags.tld来自 struts2-core-2.3.x.x.jar , 并将其放在 (each) WAR/WEB-INF文件夹。 这与 JAR 中的任何类型的 TLD 文件相关,不仅与 Struts2 相关。

在 JSP 中:

<%@ taglib prefix="s" uri="/WEB-INF/struts-tags.tld" %>

关于java - Skinny WAR,EAR : "struts-tags not found" error 中的库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19380836/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com