HTTP状态500-java.lang.LinkageError
我正在使用spring框架和maven工具使用java开发一个MVC web应用程序 当我运行应用程序时,出现以下错误HTTP状态500-java.lang.LinkageError,java,spring,maven,Java,Spring,Maven,我正在使用spring框架和maven工具使用java开发一个MVC web应用程序 当我运行应用程序时,出现以下错误 HTTP Status 500 - java.lang.LinkageError: loader constraint violation: when resolving method "org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(Ljavax/servlet/ServletConfi
HTTP Status 500 - java.lang.LinkageError: loader constraint violation: when resolving method
"org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(Ljavax/servlet/ServletConfig;)Lorg/apache/tomcat/InstanceManager;" the class loader (instance of org/apache/jasper/servlet/JasperLoader) of the current class,
org/apache/jsp/redirect_jsp, and the class loader (instance of org/apache/catalina/loader/StandardClassLoader) for the method's defining class,
org/apache/jasper/runtime/InstanceManagerFactory, have different Class objects for the type org/apache/tomcat/InstanceManager used in the signature
在WEB应用程序的
WEB-INF/lib
文件夹中有特定于服务器的jar文件。例如:jsp-api.jar、el-api.jar、servlet-api.jar等。如果使用maven进行依赖关系管理,则需要删除并排除所有这些
删除后,如果代码中出现编译错误,则从项目属性添加服务器运行时。在WEB应用程序的
WEB-INF/lib
文件夹中有特定于服务器的jar文件。例如:jsp-api.jar、el-api.jar、servlet-api.jar等。如果使用maven进行依赖关系管理,则需要删除并排除所有这些
删除它之后,如果代码中出现编译错误,则从项目属性添加服务器运行时。war文件中是否有servlet-api.jar?请在部署期间删除它,因为每个Web服务器都有自己的servlet api实现。因此,只在代码中使用它进行编译。是否有servlet-api.jar是war文件的一部分?请在部署期间删除它,因为每个Web服务器都有自己的servlet api实现。因此,只在代码中使用它进行编译。根据您发布的错误,加载org/apache/jsp/redirect_jsp的类加载器,以及
org/apache/jasper/runtime/InstanceManagerFactory的类型org/apache/tomcat/InstanceManager具有不同的类对象,这意味着您正在引用一个jar,该jar在两个不同的类加载器中包含org.apache.tomcat.InstanceManager,并且这些加载器具有委托关系。基于类对象的完全限定类名和加载程序,类对象是唯一的 这是一个关于这类错误的非常好的例子
您需要了解如何加载该类两次,并修改设置,以便只加载一次。根据您发布的错误,加载org/apache/jsp/redirect\u jsp的类加载器,以及
org/apache/jasper/runtime/InstanceManagerFactory的类型org/apache/tomcat/InstanceManager具有不同的类对象,这意味着您正在引用一个jar,该jar在两个不同的类加载器中包含org.apache.tomcat.InstanceManager,并且这些加载器具有委托关系。基于类对象的完全限定类名和加载程序,类对象是唯一的 这是一个关于这类错误的非常好的例子
您需要了解如何加载该类两次,并修改设置,以便只加载一次。如前几篇文章所述,这应该是由于您的项目中存在冲突的库(jsp api、servlet api、el api等),您需要排除这些库 如果您使用的是SpringBoot,那么在生成要在tomcat中部署的war时,需要排除tomcat libs 例如
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-el</artifactId>
</exclusion>
org.springframework.boot
弹簧启动机tomcat
org.apache.tomcat.embed
tomcat嵌入式el
如前几篇文章所述,这应该是由于项目中的库(jsp api、servlet api、el api等)存在冲突,您需要排除这些库
如果您使用的是SpringBoot,那么在生成要在tomcat中部署的war时,需要排除tomcat libs
例如
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-el</artifactId>
</exclusion>
org.springframework.boot
弹簧启动机tomcat
org.apache.tomcat.embed
tomcat嵌入式el
应用程序在本地运行,但发生部署到服务器错误。您是否在两个位置使用相同的服务器?提取war文件并检查WEB-INF/lib文件夹中是否存在servlet api jar。应用程序在本地运行,但发生部署到服务器错误。您是否在两个位置使用相同的服务器?提取war文件并检查WEB-INF/lib文件夹中是否存在servlet api jar。应用程序在本地运行,但将发生部署到服务器错误。如何解决此问题。请帮助我应用程序在本地运行,但将发生部署到服务器错误。如何解决此问题。请帮帮我