gpt4 book ai didi

java - 未找到 JSP 2 标记文件 “/WEB-INF/tags”

转载 作者:行者123 更新时间:2023-11-28 22:33:44 25 4
gpt4 key购买 nike

是的,这个问题与this one非常相似但最大的不同是我使用的是 TLD 文件而不是 taglib-to-folder 声明。

好的,我的设置如下:我正在将一个纯 Java 标签库迁移到几乎 JSP(一些标签仍将保留其 Java 形式)。我在 classpath:META-INF 文件夹下定义了一个 TLD。一些标签被定义为类,而其他标签现在被定义为 /WEB-INF/tags 下的 JSP 2 标签文件。给出的例子:

<tag-file>
<name>navbar</name>
<path>/WEB-INF/tags/navbar.tag</path>
<display-name>Navbar</display-name>
</tag-file>

这一切在 Eclipse 下都很好用,尽管我必须手动设置 Web Deployment Assemblysrc/META-INFWEB-INF,否则 Tomcat 无法识别 TLD 文件。

在愉快地调试代码后,我尝试创建我的应用程序的 WAR 版本以部署到 SIT。尽管 WEB-INF 下存在 tags 目录以及 JSP 2 标记文件,但我仍然无法运行该应用程序。

错误 iiiiiiiiiiiiis:

org.apache.jasper.JasperException: /login.jsp (line: 3, column: 0) File [/WEB-INF/tags/navbar.tag] not found
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:41)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:275)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:91)
org.apache.jasper.compiler.Parser.processIncludeDirective(Parser.java:335)
org.apache.jasper.compiler.Parser.parseIncludeDirective(Parser.java:368)
org.apache.jasper.compiler.Parser.parseDirective(Parser.java:471)
org.apache.jasper.compiler.Parser.parseElements(Parser.java:1435)
org.apache.jasper.compiler.Parser.parse(Parser.java:139)
org.apache.jasper.compiler.ParserController.doParse(ParserController.java:227)
org.apache.jasper.compiler.ParserController.parse(ParserController.java:100)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:199)
org.apache.jasper.compiler.Compiler.__compile(Compiler.java:356)
org.apache.jasper.compiler.Compiler.compile(Compiler.java)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:336)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:323)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:585)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:363)
org.apache.jasper.servlet.JspServlet._serviceJspFile(JspServlet.java:396)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)

TLD 照常声明

<%@ taglib prefix="example" uri="http://www.example.org/example.tld"%>

我该如何解决这个问题?

最佳答案

好的,我找到了部分解决方案(如果找到完整的解决方案,我会更新此答案)。

看起来如果我在 classpath 下部署 TLD 文件,那么我应该相应地部署标签。

我不得不更换 <path>/WEB-INF/tags/navbar.tag</path><path>/META-INF/tags/navbar.tag</path>并将所有标签移动到classpath:META-INF/tags下.

这样,WAR 包就可以工作了。

不幸的是,我破坏了我的 Eclipse 设置,所以解决方法是手动设置一个 Deployment assembly来自 src/META-INF/tags 的条目至 META-INF/tags因为标记文件现在引用 META-INF文件夹。非常丑陋,但适合目前的开发。

关于java - 未找到 JSP 2 标记文件 “/WEB-INF/tags”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39082178/

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