Gradle JavaFX项目引入JSON Simple依赖报找不到包/模块如何解决
问题原因
- json-simple 1.1.1 是停止维护多年的非模块化 Jar 包,既没有内置
module-info.class,也没有在清单文件中声明自动模块名。模块化项目默认不会将这类无模块信息的依赖放到模块路径下,导致module-info.java中声明的requires json.simple无法被 Gradle 构建识别。 - 手动在 IntelliJ 中添加 Jar 包仅修改了 IDE 本地的项目配置,没有同步到 Gradle 构建脚本中,所以仅 IDE 编译不报错,执行 Gradle 命令时依然读取不到对应依赖。
- 未显式配置 Gradle 模块路径推断规则时,无模块信息的依赖会被默认放到类路径中,而模块化项目中类路径的依赖对模块不可见,就会出现
package does not exist报错。
解决方案
继续使用 JSON-Simple 的修复步骤
- 先删除手动创建的
libs目录和 IntelliJ 中手动添加的库配置,所有依赖统一走 Gradle 声明,在build.gradle中添加依赖:
dependencies { implementation 'com.googlecode.json-simple:json-simple:1.1.1' }
- 在
build.gradle中添加模块化相关配置,强制将 json-simple 纳入模块路径:
java { // 开启模块路径自动推断 modularity.inferModulePath = true } // 补充编译、运行时的模块配置 compileJava { options.javaModulePath += files(configurations.compileClasspath) } run { jvmArgs += '--add-modules', 'json.simple' }
- 保留
module-info.java中的requires json.simple;声明,执行gradle clean build验证即可。
推荐替代 JSON 解析方案
JSON-Simple 已停止维护多年,更推荐使用以下对 Java 模块化支持完善、维护活跃的解析库:
- Jackson:Java 生态应用最广的 JSON 解析库,支持数据绑定、自定义序列化规则等全场景能力,依赖声明:
implementation 'com.fasterxml.jackson.core:jackson-databind:2.15.2'
对应 module-info.java 配置:requires com.fasterxml.jackson.databind;
- Gson:Google 出品的轻量 JSON 库,API 简洁易上手,适合小型项目,依赖声明:
implementation 'com.google.code.gson:gson:2.10.1'
对应 module-info.java 配置:requires com.google.gson;
- FastJSON2:高性能 JSON 解析库,序列化/反序列化速度优势明显,适合对性能要求高的场景,依赖声明:
implementation 'com.alibaba.fastjson2:fastjson2:2.0.40'
对应 module-info.java 配置:requires com.alibaba.fastjson2;
内容的提问来源于stack exchange,提问作者Jordan
相关产品推荐
相关产品推荐

