2013-07-12 59 views
0

我正在研究一個我計劃在Heroku上部署的Spring MVC服務應用程序。雖然我部署的應用程序與git push和該應用程序依賴於Jetty,一切工作正常。然後,我決定從應用程序中刪除Jetty,將應用程序拆分爲幾個模塊,使用Maven將其捆綁到WAR中,並將該WAR部署到Heroku(有效地將我的應用程序部署到Tomcat 7)。應用程序的服務部分繼續正常工作,但JSP的開始拋出異常怪異:Heroku上的JSP - 「無法編譯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不起作用。

沒有其他人遇到這個或類似的問題,有誰知道如何解決它?

回答

2

那麼,回答我自己的問題......我做了兩件事來解決這個問題:
1)我已經從Maven pom.xml文件中刪除了剩餘的Jetty依賴項; Jetty只用於本地測試,所以這不會導致更多的問題
2)我添加了對org.springframework.ui.Model的引用,作爲重定向到JSP頁面的所有Spring MVC控制器方法的參數,以及現有的Map<String, Object>參數;服務方法 - 那些返回XML或JSON的方法 - 保持不變。我還將Map<String, Object>參數的所有成員複製到了Model參數中。

我的猜測是,從pom.xml中移除Jetty依賴關係並沒有訣竅,但我也實施了第二個修復措施以實現更好的效果。