2011-09-29 98 views
0

我是Spring 3的新手。我新安裝Eclipse Indigo,Spring Tool Suite。 使用Spring Tool Suite「Spring Template - > Spring MVC項目」。我創建了一個Hello World應用程序。有例外。 Spring 3與Spring Tool Suite,Tomcat 7和Maven

運行應用程序時。它給出了一個例外。

java.lang.LinkageError: loader constraint violation: when resolving interface method "javax.servlet.jsp.JspApplicationContext.getExpressionFactory()Ljavax/el/ExpressionFactory;" the class loader (instance of org/apache/jasper/servlet/JasperLoader) of the current class, org/apache/jsp/index_jsp, and the class loader (instance of org/apache/catalina/loader/StandardClassLoader) for resolved class, javax/servlet/jsp/JspApplicationContext, have different Class objects for the type javax/el/ExpressionFactory used in the signature 
org.apache.jsp.index_jsp._jspInit(index_jsp.java:31) 
org.apache.jasper.runtime.HttpJspBase.init(HttpJspBase.java:49) 
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:181) 
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:370) 
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389) 
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 

什麼是錯的建立

+0

Bozho是對的,問題是你有第二個el-api.jar。但是,如果它是由'提供的'定義的,則依賴必須來自其他地方。但爲了驗證,我建議您通過maven構建應用程序,然後手動部署戰爭(不使用IDE)。如果異常沒有消失,檢查是否還有一些其他的依賴項依賴於'el-api.jar'(STS,pom.xml,Dependency Hierarchy標籤) – Ralph

+0

Bozho我試圖從你的指導中啓用m2e-wtp設置。但是我的Eclipse被絞死了。所以嘗試與拉爾夫的選擇。在Tomcat中手動部署WAR文件並嘗試使用它。錯誤消失。注意:我必須在pom.xml中刪除el-api.jar的標籤。 – Ezhil

+0

WAR是否與el-api一起工作並且提供了作用域? – Ralph

回答

1

刪除任何el-api.jarWEB-INF/lib

如果您在IDE中運行時,你應該有el-api.jarprovided範圍最多。即使如此,它仍然可能會失敗,因爲IDE有時不考慮範圍。我認爲m2e-wtp插件應該修復它。

+0

WEB-INF/lib目錄中沒有el-api.jar。我沒有添加任何內容給MVC結構給出的默認設置。 – Ezhil

+0

你的WEB-INF/lib的內容是什麼? (或者,如果你是通過IDE部署 - 你有你的依賴列表罐子) – Bozho

+0

是在pom.xml中我已經給相關**' \t \t javax.el \t \t EL- API \t \t 提供 \t \t 2.2 \t'**。另外我的WEB-INF/lib是空的。 – Ezhil

1

這是因爲使用JSP 2.1爲Tomcat 6.0創建模板,而使用JSP 2.2創建Tomcat 7.0。 正如您在本頁所看到的: http://tomcat.apache.org/whichversion.html

我嘗試在pom.xml中更改2.2的jsp jar並添加el-api 2.2。但還不夠。我沒有發現最後的問題。

最後我選擇使用Tomcat的6

問候

0

我有同樣的問題,並通過編輯POM,改變從2.1 JSP的API版本到2.2

<dependency> 
     <groupId>javax.servlet.jsp</groupId> 
     <artifactId>jsp-api</artifactId> 
     <version>2.2</version> <!-- 2.1 for Tomcat 6, 2.2 for Tomcat 7 --> 
     <scope>provided</scope> 
    </dependency> 
解決它
相關問題