java - 无法使用外部库编译 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 中?
解决方案
如果您查看以下 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
推荐阅读
- java - 如何从基类继承,但在派生类中将基类的一些公共方法设为私有?
- javascript - 用于捕获浏览器窗口大小调整的 React JS 函数不起作用
- python - SQLite3 表未正确保存
- android - 如何动态设置视图的宽度
- github - 在组织级别启用 Github 中的分支保护规则
- mysql - 选择具有用户自己时间范围的行
- c# - 尝试在 VSTO 中获取内部 SheetId 以帮助检测工作表重命名
- mysql - MYSQL从ID和seq_num的表中查找下一个seq_num
- amazon-web-services - 如何在 AWS 弹性豆茎上部署 MEAN 堆栈应用程序?
- python - 将节点标签添加到散景网络图中的连接节点