项目中引入springboot引起错误:NoClassDefFoundError: com/fasterxml/jackson/annotation/JsonMerge

问题描述:

项目突然需要提供rest接口,因此引入了springboot,但出现如下问题:(之前项目一切正常)

项目中引入springboot引起错误:NoClassDefFoundError: com/fasterxml/jackson/annotation/JsonMerge

问题分析:

首先考虑到项目中引入了jackson:

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.7</version>
        </dependency>

查看依赖图:

项目中引入springboot引起错误:NoClassDefFoundError: com/fasterxml/jackson/annotation/JsonMerge

猜测是jackson-annotations引起的版本冲突,于是在springboot中移除jackson-databind:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>ch.qos.logback</groupId>
                    <artifactId>logback-classic</artifactId>
                </exclusion>
                <exclusion>
                    <artifactId>log4j-over-slf4j</artifactId>
                    <groupId>org.slf4j</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>jackson-databind</artifactId>
                    <groupId>com.fasterxml.jackson.core</groupId>
                </exclusion>
            </exclusions>
        </dependency>

但问题依然没解决。

最后尝试着引入单独jackson-annotations:

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.9.7</version>
        </dependency>

问题解决!

解决方法:

添加依赖

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.9.7</version>
        </dependency>

分析原因:

未知。请各位看官指点!