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

来源:互联网 发布:fpga与单片机速度 编辑:程序博客网 时间:2024/05/16 12:04

今天在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 0
原创粉丝点击