Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 352|回复: 0

异常处理_Maven之web项目java.lang.LinkageError

[复制链接]
  • TA的每日心情
    奋斗
    2024-4-6 11:05
  • 签到天数: 748 天

    [LV.9]以坛为家II

    2034

    主题

    2092

    帖子

    70万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    705612
    发表于 2021-5-8 12:58:00 | 显示全部楼层 |阅读模式

    浏览器运行项目异常如下:

    HTTP Status 500 -
    
    type Exception report
    
    message
    
    description The server encountered an internal error () that prevented it from fulfilling this request.
    
    exception
    
    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 p.JspApplicationContext.getExpressionFactory()Ljavax/el/ExpressionFactory; used in the signature
    	org.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:181)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:370)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    	org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:96)
    
    note The full stack trace of the root cause is available in the Apache Tomcat/7.0.22 logs.
    

    刚看到该异常有点蒙,Ljavax/el/ExpressionFactory什么鬼,我的servlet-api.jar和jsp-api.jar都有啊

    <dependency>
      <groupId>org.apache.tomcat</groupId>
      <artifactId>servlet-api</artifactId>
      <version>6.0.37</version>
    </dependency>
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.1</version>
    </dependency>  

    通过网上的解释是tomcat1.7中的servlet-api.jar包,jsp-api.jar等与自己lib中的jar有所冲突

    给的解决方案就是去掉自己项目中lib中冲突的jar包

    但是问题又来了,那自己的是maven项目重启不就找不到相关jar包了吗,启动不就报错了吗

    好吧,那我就设置包的作用范围为provided

    <dependency>
      <groupId>org.apache.tomcat</groupId>
      <artifactId>servlet-api</artifactId>
      <version>6.0.37</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.1</version>
      <scope>provided</scope>
    </dependency>

    重新发布,启动tomcat,运行,成功,谢谢老天

    PS_Maven_scope:

    在POM 4中,<dependency>中<scope>,它主要管理依赖的部署,目前<scope>可以使用5个值
      * compile: 缺省值,适用于所有阶段,会随着项目一起发布
      * provided: 类似compile,期望JDK、容器或使用者会提供这个依赖,如servlet.jar
      * runtime: 只在运行时使用,如JDBC驱动,适用运行和测试阶段
      * test: 只在测试时使用,用于编译和运行测试代码,不会随项目发布
      * system: 类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它
    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-20 03:22 , Processed in 0.065474 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表