解决访问Tomcat时报java.lang.LinkageError错误

今天在VPN上解决其它问题时突然遇到了这么一个奇怪的错误,异常大约如下所示(其它相似异常也可能是该问题):

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. exception  
  2.   
  3. javax.servlet.ServletException: java.lang.LinkageError: loader constraint violation: when resolving interface method "javax.servlet.jsp.JspApplicationContext.getExpressionFactory()Ljavax/el/ExpressionFactory;  
  4. " 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,   
  5. have different Class objects for the type javax/el/ExpressionFactory used in the signature  
  6. org.apache.jasper.servlet.JspServlet.service(JspServlet.java:343)  
  7. javax.servlet.http.HttpServlet.service(HttpServlet.java:722)  
  8.   
  9. root cause  
  10.   
  11. 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  
  12. org.apache.jsp.index_jsp._jspInit(index_jsp.java:31)  
  13. org.apache.jasper.runtime.HttpJspBase.init(HttpJspBase.java:49)  
  14. org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:180)  
  15. org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369)  
  16. org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)  
  17. org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)  
  18. javax.servlet.http.HttpServlet.service(HttpServlet.java:722)  

如果将Web应用移出Tomcat的webapps目录再启动Tomcat则页面可以正常访问,将web项目放进去再访问就报错,后来Google了一下,发现是jar包问题(在此鄙视一下百度),就是说我们自己的应用中不应该包含WEB服务相关的jar包,即 /WEB-INF/lib 目录下不能出现诸如 jsp-api.jar、el-api.jar、servlet-api.jar 等jar包,于是我到自己项目的lib下查看,果然有几个这样的包,如下:

  • jstl-1.2.jar
  • jsp-api-2.1-6.1.14.jar
  • jsp-2.1-6.1.14.jar
  • jsf-impl.jar
  • jsf-api.jar
  • jsr305-1.3.9.jar

于是我将相关的包删除后,再启动tomcat,可以正常访问。

在此记录一下。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值