我有一个Spring Boot应用程序,正在使用Eclipse上的STS开发。我正在尝试使用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罐子包含到mvnw停止失败的编译sp中?
答案 0 :(得分:2)
如果查看以下URL,则杰克逊数据绑定与杰克逊核心和杰克逊注释有关。因此,无需提及它们。它将在内部使用依赖项。正如Denium Sir所说,删除依赖项,在正常情况下仅使用jackson databind,如果Spring引导应用程序仅使用BOM(材料构建),则无需提及这些依赖项。
https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind/2.7.5