我在Eclipse IDE中使用JSF 2.0。当我尝试实现JSP和Servlet时,出现以下错误:
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/exCrop_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 at org.apache.jsp.exCrop_jsp._jspInit(exCrop_jsp.java:31) at org.apache.jasper.runtime.HttpJspBase.init(HttpJspBase.java:49) at org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:181) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:370) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
这是怎么引起的,我该如何解决?
你的classpath是一团糟。
这个特殊的例外情况表明,您已经在Webapp的/WEB-INF/lib文件夹中乱扔了任意下载的servlet容器make / version特定于servlet容器的库,该库与您实际将webapp部署到的servlet容器不兼容。特定的异常消息表明您/WEB- INF/lib包含jsp-api.jar,j2ee.jar和/或javaee.jar文件。
/WEB-INF/lib
/WEB- INF/lib
jsp-api.jar
j2ee.jar
javaee.jar
您应该 删除 它们。Servlet容器 已 随JSP一起提供。永远不要复制/移动特定于servletcontainer的库。它只会与目标运行时冲突。如果您这样做是为了解决IDE中的编译错误,那么您应该以不同的方式解决它。即,您应该将目标servletcontainer集成到IDE中,然后将其与项目关联为 Targeted Runtime 。这样,IDE将在编译时类路径中自动使用servlet容器的库。