异常描述:今天开发SpringMVC项目时,导入jackson-databind
jar包依赖后报错。错误信息为:org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 19
SpringMVC项目导入的jar包依赖为:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.4</version>
</dependency>
检查原因时发现,使用了tomcat
插件导致:
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.1</version>
<configuration>
<port>80</port><!--tomcat端口号-->
<path>springmvc</path><!--虚拟目录-->
<uriEncoding>UTF-8</uriEncoding><!--访问路径编解码字符集-->
</configuration>
</plugin>
</plugins>
</build>
异常报错原因:tomcat
插件的版本过低,jackson-databind
依赖版本高了。tomcat
和jackson-databind
冲突,但不影响程序运行。
解决方法:
方法一:降低jackson-databind
依赖版本;
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.8</version>
</dependency>
</dependencies>
我将依赖版本降低为2.9.8
后运行SpringMVC项目,正常运行。
方法二:使用高版本的tomcat
, 使用tomcat
版本9以上就可以了。
方法三:在pom.xml文件导入jackson-databind
依赖下添加如下,让jackson-databind
依赖只在编译时有效即可解决问题。
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.4</version>
<scope>provided</scope><!--只在编译时有效-->
</dependency>