我的Web应用程序找不到Struts 1 - struts-taglib.jar

时间:2010-03-14 04:53:43

标签: java jsp struts struts-1

我正在使用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 - Problem in deploying Web Application了解更多信息

5 个答案:

答案 0 :(得分:4)

您说JAR确实出现在Web应用程序的WEB-INF / lib中;我会接受你的话,相信你。

我建议您打开struts-taglib.jar,打开标记库的.tld,并验证&lt; uri&gt;您在&lt; taglib&gt;下找到的值root匹配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中成为一种常见的做法。

答案 1 :(得分:0)

你的类路径中有/WEB-INF/lib吗?

答案 2 :(得分:0)

部署之后是/ WEB-INF / lib中的jar文件吗?如果没有手动解决问题?

答案 3 :(得分:0)

从struts-taglib.jar中重新检查您的URI和TLD文件中的URI。

请注意最近更改了URI:http://wiki.apache.org/struts/StrutsUpgradeNotes12to13

答案 4 :(得分:0)

确保您的struts-taglib-1.3.10.jar直接位于/ WEB-INF / lib下,而不是在/ WEB-INF / lib / struts

之类的任何子文件夹中