首页 > 解决方案 > 无法使用外部库编译 Spring Boot 应用程序

问题描述

我有一个使用 Eclipse 上的 STS 开发的 Spring Boot 应用程序。我正在尝试使用 Maven 将 Jackson 库合并到此应用程序中。

在我的 POM 文件中标识的项目中的依赖项如下:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
 <dependency>
   <groupId>com.fasterxml.jackson.core</groupId>
   <artifactId>jackson-core</artifactId>
   <version>2.7.5</version>
 </dependency>
 <dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.7.5</version>
 </dependency>
 <dependency>
    <groupId>com.fasterxml.jackson.core</groupId> 
    <artifactId>jackson-annotations</artifactId>
    <version>2.7.5</version>
 </dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>

我一直在尝试使用编译代码

mvnw clean package

但我收到以下原因导致的编译失败:

Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.exc.InvalidDefinitionException
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) ~[na:1.8.0_131]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_131]
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335) ~[na:1.8.0_131]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_131]
    ... 62 common frames omitted

具有该类的库已在 POM 文件中声明!

我显然在这里遗漏了一些东西。如何让编译器将 Jackson jar 包含到 mvnw 停止失败的编译 sp 中?

标签: javaspringspring-boot

解决方案


如果您查看以下 url,jackson 数据绑定依赖于 jackson 核心和 jackson 注释。所以没有必要提及它们。它将在内部使用依赖项。正如 Denium Sir 所说,删除依赖关系,正常情况下仅使用 jackson 数据绑定,如果 Spring boot 应用程序仅使用 BOM (Build of Material),则无需提及这些依赖关系。

https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind/2.7.5


推荐阅读