You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Gradle构建模块化JavaFX应用时javax.json模块找不到

解决步骤

1. 修正module-info.java中的模块名称错误

当前编译错误的核心是依赖的模块名称写错了:

  • org.glassfish:javax.json的实际模块名是org.glassfish.json,而非org.glassfish
  • javax.json-api的模块名确实是javax.json,这部分无需修改
  • jOpenDocument是非模块化JAR,它的自动模块名为jOpenDocument(自动模块名规则:去掉JAR文件名的版本号与后缀),若代码中用到该库,需添加对应的requires声明

修正后的module-info.java:

module hellofx {
    requires javafx.controls;
    requires org.apache.logging.log4j;
    
    // 正确的JSON API与实现模块名
    requires javax.json;
    requires org.glassfish.json;

    // 非模块化依赖jOpenDocument的自动模块名
    requires jOpenDocument;

    exports org.openjfx;
}

2. 调整Gradle配置,对齐Java版本

将Java版本配置为你实际使用的OpenJDK 14,避免版本不一致导致的潜在问题:
修改build.gradle中的版本配置:

sourceCompatibility = "14"
targetCompatibility = "14"

org.javamodularity.moduleplugin插件会自动处理自动模块依赖,无需额外配置模块路径。

3. 解决Eclipse未解析导入错误

Eclipse的模块依赖识别需要Gradle生成正确的项目配置,执行以下命令重新生成Eclipse文件:

./gradlew eclipse

之后在Eclipse中右键项目 → Refresh,重新导入项目即可解决未解析导入的问题。

4. 验证编译与打包

执行编译任务验证修改:

./gradlew compileJava

确认无错误后,可尝试运行或打包:

./gradlew run
./gradlew jlink
额外说明
  • 若某个依赖仅在编译时需要、运行时可选,可将requires替换为requires static
  • Badass JLink Plugin支持模块化JAR与自动模块(非模块化JAR转换而来),jOpenDocument符合打包要求,无需额外处理

内容的提问来源于stack exchange,提问作者CT95

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 04:15:39