我正在使用Struts-1。我开发了一个基于struts的web应用程序。通过在struts-taglib.jar文件中插入以下行,我在中提供的JSP页面中使用了struts标记:
<%@ taglib prefix="html" uri="http://struts.apache.org/tags-html" %>
<%@ taglib prefix="logic" uri="http://struts.apache.org/tags-logic" %>
<%@ taglib prefix="bean" uri="http://struts.apache.org/tags-bean" %>现在,当我在本地系统上运行它时,应用程序运行得很好,但是当我在服务器上部署它时,它显示了以下异常:
org.apache.jasper.JasperException: The absolute uri: http://struts.apache.org/tags-html cannot be resolved in either web.xml or the jar files deployed with this application从上述异常来看,应用程序似乎没有找到struts-taglib.jar文件。
但是我已经将struts-taglib.jar放在了/WEB-INF/lib目录中。那问题在哪里?
注意:您也可以查看Java - Problem in deploying Web Application获得更多信息,
发布于 2010-03-23 01:42:51
您说JAR确实出现在web应用程序的web/lib中;我会相信您的话。
我建议您打开struts-taglib.jar,打开标记库的.tld,并验证在根目录下找到的值是否与JSP中给定前缀的uri匹配。我猜URI不匹配,这意味着即使JAR在CLASSPATH中,类加载器也找不到标记库。
它还可能指示版本更改是否使JAR和JSP中的URI不同步。
我刚刚下载了struts-1.3.10-all.zip,并查看了其中包含的struts-logic.tld。<uri>标记的值是http://struts.apache.org/tags-logic,所以看起来您还好。
.tld文件看起来像是从JAR外部化的。在.\src\el\src\main\resources\main\tld下面查找它们,将它们放在您的/ web.xml中,并在您的web.xml中显式地引用它们。这应该能帮你解决问题。
我不认为.tld在web.xml中是必要的,但是如果URI思想不顺利,您可以尝试将类似于这个示例的东西从"JSTL“添加到您的web.xml中(相应修改):
<taglib>
<taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
<taglib-location>/WEB-INF/c.tld</taglib-location>
</taglib>这可能是因为Struts1.0在这一点上已经相当陈旧了。在Struts1.0开发之后,将.tld打包到taglib的JAR中成为一种常见的做法。
发布于 2010-03-14 04:59:02
/WEB-INF/lib在你的类路径中吗?
发布于 2010-03-18 10:01:01
部署之后,它实际上是/WEB/lib中的jar文件吗?如果没有,会否用手解决问题呢?
https://stackoverflow.com/questions/2441254
复制相似问题