[英]Struts 1 - struts-taglib.jar is not being found by my web application
我正在使用Struts-1
。 我开发了一个基于struts的Web应用程序。 我在struts-taglib.jar
提供的JSP页面中使用struts标记,方法是在JSP文件中插入以下行:
<%@ 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 - 部署Web应用程序时出现的问题以获取更多信息
你说JAR确实出现在WEB应用程序的WEB-INF / lib中; 我会接受你的话,相信你。
我建议您打开struts-taglib.jar
,打开标记库的.tld,并验证在<taglib>根目录下找到的<uri>值是否与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 \\ META-INF \\ tld下查找它们,将它们放在/ WEB-INF中,并在web.xml中显式引用它们。 那应该是你排除。
我不相信web.xml中的.tld是必要的,但是如果URI没有想到,你可以尝试从“JSTL In Action”中添加类似于此示例的内容到你的web.xml(相应地修改):
<taglib>
<taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
<taglib-location>/WEB-INF/c.tld</taglib-location>
</taglib>
可能是因为Struts 1.0在这一点上相当老。 在开发Struts 1.0之后,将.tld打包在taglib的JAR中成为一种常见做法。
你的类路径中有/WEB-INF/lib
吗?
部署后,实际上是/ WEB-INF / lib中的jar文件? 如果没有手动解决问题?
从struts-taglib.jar中重新检查您的URI和TLD文件中的URI。
请注意URI最近已更改: http : //wiki.apache.org/struts/StrutsUpgradeNotes12to13
确保struts-taglib-1.3.10.jar直接位于/ WEB-INF / lib下,而不是在/ WEB-INF / lib / struts之类的任何子文件夹中
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.