2013-11-14 46 views
0

我在tomcat 7.0.42中有個例外。我正在做的唯一事情是在webapps目錄中部署一個grails應用程序。我沒有改變任何配置...和tomcat工作正常,直到最近。Tomcat 7.0.42使用Grails應用程序崩潰

我真的還沒有找到什麼讓我的戰爭和Tomcat之間的麻煩。

我搜索的檔案,發現了一些罐子大概可以發生衝突。我發現在WEB-INF中存在的jetty.jar和servlet.jar可能是衝突的來源,但是沒有在我的WEB-INF目錄中找到它們中的任何一個...

這是我的堆棧跟蹤:

org.apache.jasper.JasperException: java.lang.ClassCastException: org.apache.jasper.el.ELContextImpl cannot be cast to org.apache.jasper.el.ELContextImpl 
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549) 
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470) 
    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) 

有沒有人有這個問題的原因,當它不是由於衝突的罐子?

+0

您的JSP文件可能具有無效的EL表達式。檢查語法! – Keerthivasan

+0

在你的grails應用程序上做一個依賴關係報告,我懷疑你可能有一些東西在編譯範圍內的'tomcat' Grails插件,而不是構建範圍,這會在你構建戰爭時將tomcat JAR放入你的WEB-INF/lib 。 –

+0

您是否找到解決問題的方法?對於其他情況,請接受答案或提供自己的答案。 – Vadimo

回答

0

搜索類路徑中的類org.apache.jasper.el.ELContextImpl。我相信你會找到更多的條目。此類也可能位於tomcat的libs目錄中。如果沒有找到,請在那裏檢查。

下面是一些工具,可以幫助你分析類路徑列表。其中一些需要maven。

http://mojo.codehaus.org/extra-enforcer-rules/banDuplicateClasses.html

https://github.com/ning/maven-duplicate-finder-plugin

希望這有助於追蹤您的問題。

另一個選擇在運行時是做以下:

啓動Tomcat與JVM選項-verbose:class。這將打印出所有加載的類和它們來自的罐。請致電ELContextImpl查找罐子。拆下罐子,看看它是否再次工作。

+0

感謝Vadimo的幫助。 我已經在apache/lib中的jar中搜索,但沒有找到多個條目。我所做的是: find path/to/libs -name'* .jar'-exec grep -Hls ClassName {} \; – thereisonlyoneP