【问题标题】:Running from Eclipse can not find tld-file, but running in jar it works从 Eclipse 运行找不到 tld 文件,但在 jar 中运行它可以工作
【发布时间】:2024-01-11 22:38:01
【问题描述】:

阅读Spring Boot with JSPs in Executable Jars后,我将一个Spring Boot项目从打包为war转换为jar

虽然只要项目作为 jar 运行,一切正常,但当我在 Eclipse 中启动主类时它不起作用。该项目启动,但当我访问它时,我得到以下异常:

org.apache.jasper.JasperException: /WEB-INF/views/login.jsp (line: 6, column: 2)
The absolute uri: http://my.project/tags cannot be resolved in either web.xml
or the jar files deployed with this application

tld 文件位于/src/main/resources/META-INF/mytags.tld,请参阅以下摘录:

<tlib-version>2.0</tlib-version>
<jsp-version>2.0</jsp-version>
<short-name>My Tag library</short-name>
<uri>http://my.project/tags</uri>
<display-name></display-name>
<small-icon></small-icon>
<large-icon></large-icon>
<description></description>

函数和标签作为源文件存在于我的项目中,因此它们位于类路径中并且可供 Eclipse 访问。

这里有什么问题?

【问题讨论】:

    标签: java eclipse spring spring-boot taglib


    【解决方案1】:

    您可以尝试将您的*域名添加到src/main/resources/META-INF/resources/WEB-INF 吗?跨 servlet 容器(使用可执行 jar 时)处理 Taglibs 似乎很挑剔,而且我承认我已经有一段时间没有使用自定义 taglibs 了。不过,根据我目前的经验,META-INF/resources/WEB-INF 的行为与战争部署(使用 Tomcat)相同。

    以下讨论也可能有用:

    http://www.coderanch.com/t/522567/java-Web-Component-OCEJWCD/certification/location-TLDs

    【讨论】:

    • 您的建议听起来合乎逻辑,效果很好...... :-) 谢谢
    • 除了 TLD 之外,您还必须将任何 * .tag 文件移动到 WEB-INF/tags 文件夹才能正常工作。
    最近更新 更多