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

JavaFX打包成Fat Jar后运行报错:缺少运行时组件,如何解决?

解决方案

1. 升级JavaFX Gradle插件版本

旧版0.1.0功能有限,替换为适配Java 17的新版本:

plugins {
    id 'application'
    id 'org.openjfx.javafxplugin' version '0.17.0'
    // 可选:添加shadow插件,更便捷生成fat jar
    id 'com.github.johnrengelman.shadow' version '8.1.1'
}

2. 移除重复的JavaFX依赖

javafxplugin会根据javafx块配置自动引入对应依赖,删除dependencies中重复的JavaFX条目:

dependencies {
    implementation 'com.google.code.gson:gson:2.10.1'
    compileOnly 'org.projectlombok:lombok:1.18.30'
    annotationProcessor 'org.projectlombok:lombok:1.18.30'
    // 移除以下重复依赖
    // implementation 'org.openjfx:javafx-controls:21.0.2'
    // implementation 'org.openjfx:javafx-web:21.0.2'
}

3. 调整主类(关键修复)

如果你的launcher.Launcher直接继承javafx.application.Application,必须改为间接启动:
创建普通主类launcher.AppStarter,在其中启动JavaFX应用:

package launcher;

import javafx.application.Application;

public class AppStarter {
    public static void main(String[] args) {
        Application.launch(Launcher.class, args);
    }
}

修改Gradle主类配置:

mainClassName = "launcher.AppStarter"
// 若使用shadow插件,同步指定主类
shadowJar {
    manifest {
        attributes 'Main-Class': 'launcher.AppStarter'
    }
}

4. 修复Fat Jar打包配置(二选一)

选项A:使用Shadow插件(推荐)

Shadow插件对JavaFX模块化支持更完善,执行命令生成fat jar:

./gradlew shadowJar

生成的jar文件位于build/libs/目录下。

选项B:修改自定义fatJar任务

若坚持使用自定义任务,调整配置确保包含JavaFX运行时:

task fatJar(type: Jar) {
    duplicatesStrategy = DuplicatesStrategy.EXCLUDE
    manifest {
        attributes 'Main-Class': 'launcher.AppStarter'
        // 添加模块属性适配JavaFX模块化要求
        attributes 'Module-Classpath': configurations.runtimeClasspath.files.collect { it.name }.join(' ')
    }
    from { configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } }
    from sourceSets.main.output
}

5. 运行Fat Jar的正确命令

JavaFX仍需模块参数支持,运行命令如下:

java --add-modules javafx.controls,javafx.web -jar your-project-1.0.jar

内容的提问来源于stack exchange,提问作者токсичный kineJon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 19:13:09