我是Spring 3的新手。我新安装了Eclipse Indigo,Spring Tool Suite。 使用Spring Tool Suite“Spring Template - > Spring MVC project”。我创建了一个Hello world应用程序。
运行应用程序时。它给了一个例外。
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 :(得分:1)
从el-api.jar
WEB-INF/lib
如果您在IDE中运行,则最多应el-api.jar
provided
范围。即便如此,它仍可能失败,因为IDE有时不考虑范围。我认为m2e-wtp插件应该修复它。
答案 1 :(得分:1)
这是因为使用JSP 2.1为Tomcat 6.0创建模板,而Tomcat 7.0与JSP 2.2一起使用。 正如您在此页面中看到的: http://tomcat.apache.org/whichversion.html
我尝试在pom.xml中更改jsp jar为2.2并添加el-api 2.2。但它没有实现。我找不到最后的问题。
最后我选择使用tomcat 6.
此致
答案 2 :(得分:0)
我遇到了同样的问题并通过编辑POM解决了这个问题,将jsp-api版本从2.1更改为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>