为了账号安全,请及时绑定邮箱和手机立即绑定

java.lang.LinkageError:javax.servlet.jsp

java.lang.LinkageError:javax.servlet.jsp

慕哥6287543 2019-10-21 11:10:45
当我尝试在Tomcat 7上运行webapp时,出现以下异常:exceptionjavax.servlet.ServletException: 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 signatureorg.apache.jasper.servlet.JspServlet.service(JspServlet.java:343)javax.servlet.http.HttpServlet.service(HttpServlet.java:722)root causejava.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 signatureorg.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:180)org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369)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:722)似乎两个.jar库之间存在冲突,但我不知道它们是哪个。我该如何解决它们?
查看完整描述

3 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

当你包括在不同的服务器品牌/版服务器专用库,会发生/WEB-INF/lib你的web应用,如jsp-api.jarel-api.jarservlet-api.jar,等你需要删除它们。该/WEB-INF/lib不应包含任何特定于服务器的库。它们属于特定的服务器本身(Tomcat已将其放在其/lib文件夹中)。

顺便说一句,这是每当初学者在IDE项目中的JSP / Servlet API上遇到编译错误时,都会犯的错误。应该以不同的方式解决此问题,即通过将服务器集成到IDE中并将服务器作为“目标运行时”添加到项目中。


查看完整回答
反对 回复 2019-10-21
?
慕姐4208626

TA贡献1852条经验 获得超7个赞

我被这个错误困扰了很长时间,这个线程节省了我很多时间。在解决此问题之前,我做了一些研究。是的,我们需要jsp-api.jar, el-api.jar, servlet-api.jar从/WEB-INF/lib文件夹中删除类似的库。但是如何?


就我而言,我使用Apache Ivy作为依赖项管理器,并使用Spring MVC。它将下载所有依赖项以及上述库。在运行时,这些与Tomcat库提供的API冲突。一种简单的解决方案是从依赖项中排除这些jar或创建配置,并将这些库仅包括在编译时配置中。快速为我工作的是排除这些库。


    <dependency org="org.springframework" name="spring-webmvc"

        rev="4.0.4.RELEASE">

        <exclude org="javax.servlet" name="javax.servlet-api" />

        <exclude org="javax.servlet.jsp" name="jsp-api" />

        <exclude org="javax.el" name="javax.el-api" />

    </dependency>


查看完整回答
反对 回复 2019-10-21
  • 3 回答
  • 0 关注
  • 617 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号