我在使应用程序运行时遇到了一些问题,这似乎是 Apache Tiles 的问题。
奇怪的是,我的问题的基础是,当我使用相同的 java 版本通过 STS 部署到 2 个 tomcat 时,该应用程序可以正常工作,但是当我获取使用 maven 构建的 war 文件时(与 tomcat 的 java 版本相同)正在使用),然后将它们手动部署到应用程序无法运行的任一 tomcat。
我正在使用 jdk1.7.0_09 通过 STS 使用 Maven 进行构建
我正在使用 jdk1.7.0_09 部署到 STS 到 tomcat 7.0.32 - 这有效
使用 jdk1.7.0_09 手动部署到 tomcat webapps tomcat 7.0.32 - 错误:
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.apache.tiles.request.render.CannotRenderException: ServletException including path '/WEB-INF/tiles/layout.jsp'.
org.apache.jasper.JasperException: Unable to compile class for JSP:
An error occurred at line: 1 in the generated java file
The type java.util.Map$Entry cannot be resolved. It is indirectly referenced from required .class files
我正在使用 jdk1.7.0_09 部署到 STS 到 tomcat 7.0.53 - 这有效
使用 jdk1.7.0_09 手动部署到 tomcat webapps tomcat 7.0.53 - 错误:
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.apache.tiles.request.render.CannotRenderException: ServletException including path '/WEB-INF/tiles/layout.jsp'.
org.apache.jasper.JasperException: Unable to compile class for JSP:
An error occurred at line: 1 in the generated java file
The type java.util.Map$Entry cannot be resolved. It is indirectly referenced from required .class files
我不明白为什么当我通过 Eclipse 将它部署到相同的 tomcat 时它会起作用?
最后,当我尝试部署到使用以下设置的测试服务器(仍然使用 jdk1.7.0_09 构建的类)时:
Tomcat 8.2.0.23 jdk1.8.0_11
我在尝试解析磁贴 View 时遇到不同的错误(500 内部服务器错误):
javax.servlet.ServletException: Could not resolve view with name 'base/dashboard/view' in servlet with name 'appServlet'
我非常坚持这一点,我花了一段时间才到达现在的位置,但现在我似乎完全碰壁了,我只是不明白当通过 STS 部署时,该应用程序如何在 tomcat 中运行,但随后手动部署到 tomcat webapps 时不起作用。
任何人都可以帮助阐明这里发生的事情吗?
谢谢
最佳答案
显然,答案是“是的,有”,但这没有帮助。
查看错误信息,证据是:
问题出现在Tomcat编译JSP时,
问题是某种类路径问题。
现在奇怪的是,据称缺失的类的名称是 java.util.Map$Entry
;即标准的 Map.Entry
接口(interface)。该类位于标准 Java 库中,因此应该位于 JSP 编译器的类路径中。
推测:STS 部署和手动部署之间的区别可能有以下几点:
- 可能是 STS 正在预编译 JSP。
- 可能是 STS 对 Tomcat 的配置有所不同;例如以影响 Jasper 的方式调整 Tomcat 配置。
经过一些研究(谷歌),我怀疑使用 Tomcat 7 版本的最初问题的根本原因是您试图在 Tomcat 7 上运行为/使用 Java 8 编译器编译的代码。
TL;DR 是 Tomcat 7 和 Java 8 不能很好地协同工作。
引用:
最后一个问题(“Could not resolve view ...”)看起来无关紧要,可能是 Tomcat 7 -> Tomcat 8 移植问题。
关于java - 通过STS部署到tomcat和手动部署有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31215641/