【发布时间】:2018-02-16 15:34:57
【问题描述】:
我正在尝试将在 1.6 上运行的当前 java 项目升级到 1.8,但程序编译得很好,但是当我去 http://localhost:8080/MyProject/login.jsp- 时出现错误。
我正在使用 eclipse luna,我将 java_HOME 更改为 1.8,将 eclipse 项目方面更改为 1.8,并更新了 javax.servlet-api=3.1.0。
堆栈跟踪
springframework.web.util.NestedServletException: Request processing failed; nested exception is org.apache.tiles.impl.CannotRenderException: ServletException including path '/WEB-INF/jsp/template/noLayout.jsp'.
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:943) ~[spring-webmvc-4.0.0.RELEASE.jar:4.0.0.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:822) ~[spring-webmvc-4.0.0.RELEASE.jar:4.0.0.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:735) ~[servlet-api-3.0.jar:na]
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:807) ~[spri
Caused by: org.apache.tiles.impl.CannotRenderException: ServletException including path '/WEB-INF/jsp/template/noLayout.jsp'.
at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:692) ~[tiles-core-2.2.2.jar:2.2.2]
at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:644) ~[tiles-core-2.2.2.jar:2.2.2]
at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:627) ~[tiles-core-2.2.2.jar:2.2.2]
at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:321) ~[tiles-core-2.2.2.jar:2.2.2]
at org.springframework.web.servlet.view.tiles2.TilesView.renderMergedOutputModel(TilesView.java:88) ~[spring-webmvc-4.0.0.RELEASE.jar:4.0.0.RELEASE]
at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:266) ~[spring-webmvc-4.0.0.RELEASE.jar:4.0.0.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1225) ~[spring-webmvc-4.0.0.RELEASE.jar:4.0.0.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1012) ~[spring-webmvc-4.0.0.RELEASE.jar:4.0.0.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959) ~[spring-webmvc-4.0.0.RELEASE.jar:4.0.0.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:876) ~[spring-webmvc-4.0.0.RELEASE.jar:4.0.0.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:931) ~[spring-webmvc-4.0.0.RELEASE.jar:4.0.0.RELEASE]
... 65 common frames omitted
Caused by: org.apache.tiles.util.TilesIOException: ServletException including path '/WEB-INF/jsp/template/noLayout.jsp'.
at org.apache.tiles.servlet.context.ServletUtil.wrapServletException(ServletUtil.java:243) ~[tiles-servlet-2.2.2.jar:2.2.2]
at org.apache.tiles.servlet.context.ServletTilesRequestContext.forward(ServletTilesRequestContext.java:243) ~[tiles-servlet-2.2.2.jar:2.2.2]
at org.apache.tiles.servlet.context.ServletTilesRequestContext.dispatch(ServletTilesRequestContext.java:222) ~[tiles-servlet-2.2.2.jar:2.2.2]
at org.apache.tiles.renderer.impl.TemplateAttributeRenderer.write(TemplateAttributeRenderer.java:44) ~[tiles-core-2.2.2.jar:2.2.2]
at org.apache.tiles.renderer.impl.AbstractBaseAttributeRenderer.render(AbstractBaseAttributeRenderer.java:106) ~[tiles-core-2.2.2.jar:2.2.2]
at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:670) ~[tiles-core-2.2.2.jar:2.2.2]
at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:690) ~[tiles-core-2.2.2.jar:2.2.2]
... 75 common frames omitted
Caused by: org.apache.jasper.JasperException: PWC6033: Error in Javac compilation for JSP
PWC6199: Generated servlet error:
string:///noLayout_jsp.java:7: cannot access java.lang.Object
bad class file: java\lang\Object.class(java\lang:Object.class)
class file has wrong version 52.0, should be 50.0
Please remove or make sure it appears in the correct subdirectory of the classpath*.
noLayout.jsp
<% response.setHeader("Cache-Control", "no-store, private, must-revalidate, max-stale=0, post-check=0, pre-check=0"); //Forces caches to obtain a new copy of the page from the origin server
response.setHeader("Pragma", "no-cache"); //HTTP 1.0 backward compatibility
response.setDateHeader("Expires", 0); //Causes the proxy cache to see the page as "stale"
%><%@ page isELIgnored="false"%><!doctype html>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<link href="${pageContext.request.contextPath}/css/base.css" rel="stylesheet" type="text/css">
我正在使用 Ivy 进行依赖管理
我从
Tiles 2.2 版、spring 4.0 和码头
【问题讨论】:
-
我尝试将磁贴和弹簧升级到最新版本,但仍然出现错误。
-
看起来某些东西(可能是 Jasper?)正在使用较旧的 Java 版本运行。 This 可能是相关的。
-
感谢@Turing85,我将 jasper 更新到最新版本,仍然是同样的错误。它适用于 java 6
-
Jasper as-is 不是问题,好像是 Jasper 的配置有问题:
Caused by: org.apache.jasper.JasperException: PWC6033: Error in Javac compilation for JSP。消息class has wrong version指出某些版本不兼容,即 Jasper 尝试使用旧版本编译某些类,而您的应用程序尝试将这些类加载到运行新版本的系统(即您的 Web 服务器)中。
标签: java spring eclipse servlets apache-tiles