java - Heroku 上的 JSP - "Unable to compile class for JSP"

标签 java jsp tomcat heroku el

我正在开发一个 Spring MVC 服务应用程序,我计划将其部署在 Heroku 上。当我使用 git push 部署应用程序并且该应用程序依赖于 Jetty 时,一切正常。然后我决定从应用程序中删除 Jetty,将应用程序拆分为几个模块,使用 Maven 将其捆绑到 WAR 中并将该 WAR 部署到 Heroku(有效地将我的应用程序部署到 Tomcat 7)。应用程序的服务部分继续正常工作,但 JSP 开始抛出奇怪的异常:

org.apache.jasper.JasperException: Unable to compile class for JSP: 

An error occurred at line: 12 in the jsp file: /WEB-INF/jsp/createOrder.jsp
The method proprietaryEvaluate(String, Class<Boolean>, PageContext, null, boolean) is undefined for the type PageContextImpl
9: </head>
10: <body>
11: <c:choose>
12: <c:when test="${success}">
13:     Order successfully created
14: </c:when>
15: <c:otherwise>

堆栈跟踪:

org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:102)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:331)
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:468)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:378)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:353)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:340)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:646)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238)
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:262)
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1180)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:950)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)
javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)

看来好像 EL 不工作。

有没有其他人遇到过这个或类似的问题,有人知道如何解决吗?

最佳答案

好吧,回答我自己的问题......我做了两件事来解决这个问题:
1) 我已经从 Maven pom.xml 文件中删除了剩余的 Jetty 依赖项;无论如何,Jetty 只是用于本地测试,所以这不会造成更多问题
2) 我添加了对 org.springframework.ui.Model 的引用作为重定向到 JSP 页面的所有 Spring MVC Controller 方法的参数,以及现有的 Map<String, Object>范围;服务方法——那些返回 XML 或 JSON 的方法——保持不变。我还复制了 Map<String, Object> 的所有成员参数转换为模型参数。

我的猜测是,从 pom.xml 中删除 Jetty 依赖项可以解决问题,但我还实现了第二个修复措施。

关于java - Heroku 上的 JSP - "Unable to compile class for JSP",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17619382/

相关文章:

java - 通过 applicationcontext.xml 将值列表注入(inject)通用列表?

java - 如何在Java中呈现波形

java - JSTL 二维数组迭代

java - jsp中的request.getParameter返回null或空字符串

javascript - 在 JavaScript 中检索 innerHTML 的输入值在 IE 9 及更高版本中无法正常工作

java - 有什么方法可以阻止浏览器每秒请求相同的图像?

java - Spring 重试 XML 等效于 @EnableRetry

java - 容器生成的请求和响应对象的类型是什么?

java - 在 Tomcat 远程部署上只上传源代码

tomcat - Grails项目BuildConfig.groovy Tomcat插件版本?