引用一个jar包后报了一个错
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/WEB_002dINF/views/admin/main_jsp, and the class loader (instance of java/net/URLClassLoader) 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
错误打印一大堆,找到关键字have different Class objects for the type org/apache/tomcat/InstanceManager
有不同的类对象org/apache/tomcat/InstanceManager,加载多个相同的类会出错,这是因为maven传递依赖导致的
一看是tomcat有关的包冲突,打开jar包依赖树,找到冲突的包
选中冲突的jar包右键exclude maven artifact即可,知道具体包名可以直接在pom中手动写exclusion
<dependency>
<groupId>net.oschina.likaixuan</groupId>
<artifactId>excelutil</artifactId>
<version>1.5.4</version>
<exclusions>
<exclusion>
<artifactId>spring-boot-starter-tomcat</artifactId>
<groupId>org.springframework.boot</groupId>
</exclusion>
</exclusions>
</dependency>