首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么会出现“绝对uri:[在部署的web.xml或jar文件中都无法解析http://tiles.apache.org/tags-tiles]”的错误

为什么会出现“绝对uri:[在部署的web.xml或jar文件中都无法解析http://tiles.apache.org/tags-tiles]”的错误
EN

Stack Overflow用户
提问于 2020-09-16 07:16:50
回答 2查看 780关注 0票数 2

我有一个用Spring MVC、JSP和Apache Tiles构建的Java web应用程序。

同样的WAR文件在Windows10和Mac上运行良好。

但在Ubuntu (亚马逊AWS上的18.04)上,我得到了一个错误:

代码语言:javascript
运行
复制
org.apache.jasper.JasperException: The absolute uri: [http://tiles.apache.org/tags-tiles] cannot be resolved in either web.xml or the jar files deployed with this application

我的pom.xml文件有这些与tiles相关的依赖关系...

代码语言:javascript
运行
复制
org.apache.tiles
    tiles-jsp
    3.0.7



    org.apache.tiles
    tiles-autotag
    1.2
    pom

生成的WAR文件在WEB-INF/lib文件夹中有以下JAR文件...

代码语言:javascript
运行
复制
tiles-api-3.0.7.jar
tiles-autotag-core-runtime-1.2.jar
tiles-core-3.0.7.jar
tiles-jsp-3.0.7.jar
tiles-request-api-1.0.6.jar
tiles-request-jsp-1.0.6.jar
tiles-request-servlet-1.0.6.jar
tiles-servlet-3.0.7.jar
tiles-template-3.0.7.jar

还要注意,tomcat

应用程序似乎工作得很好。我对linux还很陌生……这会不会是Ubuntu相关的文件权限问题?

更多堆栈跟踪细节,以防有用...

代码语言:javascript
运行
复制
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.apache.tiles.request.render.CannotRenderException: ServletException including path '/WEB-INF/jsp/f_layout.jsp'.
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:986)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:870)

[...]

org.apache.tiles.request.render.CannotRenderException: ServletException including path '/WEB-INF/jsp/f_layout.jsp'.
    org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:399)
    org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:238)
    org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:221)
    org.apache.tiles.renderer.DefinitionRenderer.render(DefinitionRenderer.java:59)

[...]

org.apache.jasper.JasperException: The absolute uri: [http://tiles.apache.org/tags-tiles] cannot be resolved in either web.xml or the jar files deployed with this application
    org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:55)
    org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:293)
    org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:80)
    org.apache.jasper.compiler.TagLibraryInfoImpl.generateTldResourcePath(TagLibraryInfoImpl.java:251)
    org.apache.jasper.compiler.TagLibraryInfoImpl.(TagLibraryInfoImpl.java:122)
    org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:431)
    org.apache.jasper.compiler.Parser.parseDirective(Parser.java:489)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-16 13:12:33

问题是,由于某种原因,Tomcat不再在Tiles JAR文件中查找Tiles库的TLD文件。有一种方法可以关闭TLD扫描器(),但我的没有关闭。

我不知道我做了什么导致这种情况发生--我对tomcat配置做了很小的更改。

解决此问题的方法是手动从Tiles JAR文件中复制TLD文件,并将其复制到/WEB-INF文件夹。这样问题就解决了,但之后我不得不对项目中的许多其他JAR文件执行此操作。(例如:对Tiles执行此操作后,我得到了与SpringSecurity相同的错误)。

最后,我创建了一个新的Ubuntu 18.04实例,并安装了新的Java和Tomcat副本,一切都正常。

更新:

在摆弄了配置文件之后,我遇到的问题很可能是由下面这行代码引起的

..。

代码语言:javascript
运行
复制
tomcat.util.scan.StandardJarScanFilter.jarsToSkip=\
*.jar,\
[...]

..。这会导致在扫描期间跳过所有JAR文件。

票数 2
EN

Stack Overflow用户

发布于 2021-03-02 09:02:13

同样的事情也适用于我。我正在做一个使用spring boot和apache tiles的教程-jsp版本3.0.8。我使用以下命令提取了这个jar的内容:

代码语言:javascript
运行
复制
jar xf tiles-jsp-3.0.8.jar

这会将jar的内容写入我的目录。我在META-INF目录中找到了tld文件。我将它们复制到我的WEB-INF目录中,重新部署,然后错误就消失了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63911054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档