通过STS和手动部署到tomcat之间有区别吗?

时间:2015-07-04 00:24:27

标签: java spring tomcat

我在使应用程序工作时遇到了一些问题,而且似乎是Apache Tiles的问题。

奇怪的是,我的问题的基础是,当我使用相同的java版本通过STS部署到2个tomcats时,应用程序可以工作,但是当我使用maven构建的war文件时(与tomcat相同的java版本)正在使用),然后手动将它们部署到应用程序无法运行的任何一个tomcats。

我正在使用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将它部署到相同的tomcats时,我不明白为什么它会起作用?

最后,当我尝试部署到使用以下设置的测试服务器(仍使用jdk1.7.0_09构建的类)时:

tomcat 8.2.0.23 jdk1.8.0_11

尝试解析切片视图时出现了不同的错误(500内部服务器错误):

javax.servlet.ServletException: Could not resolve view with name 'base/dashboard/view' in servlet with name 'appServlet'

我非常坚持这一点,我花了一段时间才到达我所在的位置但是现在我似乎已经完全碰到了一堵砖墙,我只是不明白应用程序在通过STS部署时如何在tomcat中工作但是然后手动部署到tomcat webapps时无法正常工作。

任何人都可以帮助了解这里发生的事情吗?

由于

2 个答案:

答案 0 :(得分:1)

显然,答案是“是的”,但这没有帮助。

查看错误消息,证据是:

  • 当Tomcat编译JSP时会出现问题,

  • 问题是某种类路径问题。

现在奇怪的是,所谓的缺失类的名称是java.util.Map$Entry;即标准Map.Entry接口。该类位于标准Java库中,因此应该位于JSP编译器的类路径中。

推测:STS部署和手动部署之间的区别可能有以下几点:

  • 可能是STS正在预编译JSP。
  • 可能是STS以不同的方式配置Tomcat;例如以一种影响Jasper的方式调整Tomcat配置。

经过一些研究(谷歌),我怀疑使用Tomcat 7版本的初始问题的根本原因是你试图在Tomcat 7上运行为Java 8编译器编译的代码。 / p>

TL; DR是Tomcat 7和Java 8不能很好地协同工作。

参考:

最后一个问题(“无法解析视图...”)看起来无关,可能是Tomcat 7 - > Tomcat 8移植问题。

答案 1 :(得分:0)

以防这对任何人都有用,我通过将贴片版本从3.0.3升级到3.0.5非常简单。