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

首次使用JavaFX+Gradle遇JLink报错:找不到module-info.java

什么是module-info.java

这是Java模块化系统(JPMS)的核心配置文件,用于声明应用模块名称、依赖的其他模块、对外暴露/开放的包等。jlink工具必须基于模块化代码才能生成包含JavaFX运行时的镜像,缺失该文件会直接导致报错。

具体解决步骤

1. 创建module-info.java文件

在项目的src/main/java目录下新建该文件,路径示例:C:\Users\nicol\spz_app\dev\App\Spz\spz_app\src\main/java/module-info.java

2. 编写module-info.java内容

根据你的项目依赖和包结构,参考以下模板修改(注意替换org.spz为你的实际包名):

module org.spz {
    // 依赖JavaFX模块
    requires javafx.controls;
    requires javafx.fxml;

    // 依赖Kotlin标准库
    requires kotlin.stdlib;

    // 依赖JDBC驱动及第三方库
    requires com.oracle.database.jdbc;
    requires mysql.connector.java;
    requires org.yaml.snakeyaml;

    // 依赖Java标准库模块
    requires java.xml;

    // 允许JavaFX FXML反射访问控制器所在包(使用FXML必须添加)
    opens org.spz to javafx.fxml;

    // 暴露主类所在包,确保启动器能找到主类
    exports org.spz;
}

3. 完善build.gradle配置

在build.gradle中添加application插件的主类配置(Kotlin项目主类格式为包名.MainKt,对应你的Main.kt文件):

application {
    mainClass = 'org.spz.MainKt'
}

4. 重新执行jlink任务

运行Gradle的jlink任务,此时应该能正常生成包含JavaFX运行时的镜像。

关键说明

  • requires:声明当前模块依赖的其他模块,需与build.gradle中的依赖一一对应
  • opens:使用FXML时必须打开控制器所在包,否则FXML无法通过反射实例化控制器
  • exports:暴露主类所在包,保证启动器能定位并启动主类

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 18:22:56