JavaFX项目添加json-simple依赖后Gradle构建崩溃求助
问题原因
- json-simple 1.1.1的依赖配置存在问题,错误地将junit 4.10标记为编译依赖(本应仅作为测试依赖),导致你的项目自动引入了这个带有漏洞的junit版本。
- junit 4.10内部包含了
org.hamcrest相关的完整包,而你的项目(或其他依赖)同时引入了独立的hamcrest.core库。Java模块系统禁止一个模块(此处为json.simple)从两个不同模块(hamcrest.core和junit)读取同一个包,因此抛出包冲突错误。 - 漏洞警告正是来自这个意外引入的junit 4.10,它存在CVE-2020-15250权限分配漏洞。
解决方法
方法1:排除junit传递依赖(快速解决当前问题)
修改build.gradle中的json-simple依赖声明,手动排除不必要的junit传递依赖——json-simple的junit依赖仅用于自身测试,你的项目完全不需要:
implementation('com.googlecode.json-simple:json-simple:1.1.1') { exclude group: 'junit', module: 'junit' }
同步Gradle后,将requires json.simple;重新添加到module-info.java中,构建错误和漏洞警告都会消失。
方法2:更换为维护活跃的JSON库(长期方案)
json-simple项目已长期停止维护,依赖配置问题一直未修复。推荐替换为模块兼容性更好、更新更频繁的JSON库:
- Gson:
module-info.java中添加:implementation 'com.google.code.gson:gson:2.10.1'requires com.google.gson; - Jackson:
module-info.java中添加:implementation 'com.fasterxml.jackson.core:jackson-databind:2.15.2'requires com.fasterxml.jackson.databind;
内容的提问来源于stack exchange,提问作者Dabouz
相关产品推荐
相关产品推荐

