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

如何通过Gradle生成包含所有依赖的JavaFX可执行Jar包

解决方案

  1. 修复JavaFX依赖版本冲突
    你当前配置存在版本冲突问题:javafx配置块指定了版本为11.0.2,但dependencies块中手动引入的JavaFX依赖版本为14,同时openjfx插件本身会自动引入对应版本的依赖,无需手动重复声明。
    直接删除dependencies块中// here starts JavaFX注释下所有JavaFX相关的implementation声明即可。

  2. 使用Shadow插件打包含全量依赖的可执行jar
    JavaFX属于模块化依赖,使用原生jar任务打包容易出现依赖遗漏问题,替换为Shadow插件打包稳定性更高:

  • 修改plugins配置块,新增Shadow插件引入:
plugins {
 id 'java'
 id 'application'
 id 'org.openjfx.javafxplugin' version '0.0.8'
 id 'com.github.johnrengelman.shadow' version '7.1.2'
}
  • 删除你原有配置中的整个jar {...}代码块,新增如下配置:
shadowJar {
    manifest {
        attributes 'Main-Class': 'newcare.home.Main_1'
    }
    mergeServiceFiles()
    exclude 'META-INF/*.RSA', 'META-INF/*.SF','META-INF/*.DSA'
}

build.dependsOn shadowJar
  1. 执行打包命令
    配置修改完成后,在项目根目录执行打包命令:
  • Mac/Linux系统:./gradlew shadowJar
  • Windows系统:gradlew.bat shadowJar

打包完成后,进入build/libs目录,使用名称带-all后缀的jar包运行即可,命令为java -jar 包名-all.jar。

可选优化:如果运行时仍然报模块相关错误,可新增一个无继承的启动类绕开模块化检查,示例代码如下:

package newcare.home;

public class Launcher {
    public static void main(String[] args) {
        Main_1.main(args);
    }
}

之后将shadowJar配置中的Main-Class属性值修改为newcare.home.Launcher,重新打包即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 02:45:06