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

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

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中查找它
时间: 2024-11-05 18:59:42

异常处理_Maven之web项目java.lang.LinkageError的相关文章

Web项目java.lang.OutOfMemoryError: PermGen space异常解决

接手一个新的Web项目,编译运行(Tomcat版本为7),运行的时候报出了java.lang.OutOfMemoryError: PermGen space的异常,搜了一下这样解释: PermGen space的全称是Permanent Generation space,是指内存的永久保存区域. 为什么会内存溢出,这是由于这块内存主要是被JVM存放Class和Meta信息的,Class在被Load的时候被放入PermGen space区域,它和存放Instance的Heap区域不同,sun的 G

Maven Web项目 java.lang.NoClassDefFoundError: org/springframework/core/NestedRuntimeException错误

导读 使用Eclipse在从SVN或从git中check out Web项目后,运行可能会出现 java.lang.NoClassDefFoundError:org/springframework/core/NestedRuntimeException错误.检查Maven Dependencies后,发现org.springframework.core.NestedRuntimeException类就在Spring-core jar包里,系统怎么会没发现这个类呢?这时候就要考虑Maven Dep

java.lang.LinkageError: loader constraint violation: when resolving interface method

异常:java.lang.LinkageError: loader constraint violation: when resolving interface method "javax.servlet.jsp.JspApplicationContext.getExpressionFactory()Ljavax/el/Expression...... jbpm4 在tomcat6 下面ssh2 这个错误!原因是项目中WEB-INF/lib中的三个jar包(juel.jar, juel-engi

javax.servlet.ServletException: java.lang.LinkageError: loader constraint violation:

javax.servlet.ServletException: java.lang.LinkageError: loader constraint violation: when resolving method "org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(Ljavax/servlet/ServletConfig;)Lorg/apache/tomcat/InstanceManager;" th

Tomcat 加载 jsp 异常:ServletException: java.lang.LinkageError

环境:win10 JDK:java version "1.8.0_131" mvn 内置 Tomcat 报错: javax.servlet.ServletException: java.lang.LinkageError: loader constraint violation: when resolving interface method "javax.servlet.jsp.JspApplicationContext.getExpressionFactory()Ljav

项目总结50:Linux服务器上web项目Java项目性能调优

项目总结50:Linux服务器上web项目Java项目性能调优 最近上线的电商项目,发现非常卡,用户体验非常差,折腾了好久之后,也逐渐找到原因,并针对原因解决方案,先整理总结. 项目基本情况: 1-使用阿里ECS.OSS等一系列相关服务: 2-用户总量1W+,日活量500+ 3-电商项目,有APP.小程序.管理平台三个模块,其中接口150+ 4-项目使用SSM框架: 5-项目tomcat服务,数据库Mysql,Redis放在一个同一个服务器上: 问题表现: 1-接口反应非常慢,导致APP和小程序

SpringMVC Maven项目 java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServle

今天在搭建SpringMVC开发框架时,遇到了一个问题,尽管在maven的POM.xml文件中配置了项目所依赖的jar包,但在启动项目是已然报错如下: 信息: Starting Servlet Engine: Apache Tomcat/7.0.56 十一月 27, 2017 3:19:14 下午 org.apache.catalina.util.SessionIdGenerator createSecureRandom 信息: Creation of SecureRandom instance

Intellij 部署项目java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener

报错信息: org.apache.catalina.core.StandardContext.listenerStart Error configuring application listener of class org.springframework.web.context.ContextLoaderListener java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener

在MyEclipse的web项目/java项目中,使用Hibernate-tools中的hbm2java和hbm2ddl工具,根据hbm文件自动生成pojo和数据库脚本

     首先,我一定要吐槽下,这个Ant管理部署项目的工具,以及hibernate刚刚学习,导入我这一个简单的问题整了一天多,实在效率有点低下.在这两天中,①了解了Ant,知道了在Ant中很灵活的步骤项目的情况,知道了build.xml文件的一些基本写法.②还学习了在MyEclipse这样的集成工具中完成项目部署.③以及在这两种情况中,利用hibernateTools中的hbm2java和hbm2ddl工具,根据对象关系映射文件,自动生成POJO以及SQL文件(就是数据表). 一,在web项目