一尘不染

java.lang.LinkageError:违反加载程序约束:解析接口方法javax.servlet.jsp.JspApplicationContext.getExpressionFactory()时

jsp

我在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)

这是怎么引起的,我该如何解决?


阅读 558

收藏
2020-06-08

共1个答案

一尘不染

你的classpath是一团糟。

这个特殊的例外情况表明,您已经在Webapp的/WEB-INF/lib文件夹中乱扔了任意下载的servlet容器make /
version特定于servlet容器的库,该库与您实际将webapp部署到的servlet容器不兼容。特定的异常消息表明您/WEB- INF/lib包含jsp-api.jarj2ee.jar和/或javaee.jar文件。

您应该 删除 它们。Servlet容器
随JSP一起提供。永远不要复制/移动特定于servletcontainer的库。它只会与目标运行时冲突。如果您这样做是为了解决IDE中的编译错误,那么您应该以不同的方式解决它。即,您应该将目标servletcontainer集成到IDE中,然后将其与项目关联为
Targeted Runtime 。这样,IDE将在编译时类路径中自动使用servlet容器的库。

2020-06-08