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

如何无需添加VM选项打开JavaFX可运行JAR文件?

问题解决指南

一、双击JAR无反应/直接java -jar报错的解决方法

报错Fehler: Zum Ausführen dieser Anwendung benötigte JavaFX-Runtime-Komponenten fehlen的核心原因是:JavaFX从JDK 11起不再随JDK默认分发,直接运行JAR时JVM找不到JavaFX的核心模块。以下是几种可行方案:

1. 使用启动脚本简化运行

创建Windows批处理文件(.bat),将完整运行命令写入其中,双击即可执行:

@echo off
java --module-path C:\JavaFX-SDK-17\lib --add-modules javafx.controls,javafx.fxml -jar test.jar
pause

将该文件与test.jar放在同一目录,双击就能运行,无需手动输入参数。

2. 打包包含JavaFX依赖的自运行JAR

放弃Eclipse自带的Runnable JAR导出功能,改用Maven或Gradle构建工具,配合JavaFX官方插件打包:

  • Maven:使用javafx-maven-plugin,配置jlink或jar目标,打包后生成的JAR可直接用java -jar运行(插件会自动处理依赖)。
  • Gradle:使用org.openjfx.javafxplugin,配置打包任务后,生成包含所有依赖的可执行JAR。

3. 构建模块化自定义运行时镜像

如果项目补上module-info.java(JavaFX模块化开发的标准配置),可以用jlink工具生成包含JRE和JavaFX依赖的自定义镜像,生成后会有直接可双击的.exe文件:

jlink --module-path C:\JavaFX-SDK-17\lib;%JAVA_HOME%\jmods --add-modules 你的模块名 --output 输出目录 --launcher 启动名=你的模块名/主类全路径

生成的目录中bin/启动名.exe可直接双击运行。

二、导出JAR时duplicate entry: module-info.class警告的解决方法

该警告是因为导出时选择了提取所有依赖库到JAR中,而JavaFX的每个模块(如javafx.controls、javafx.fxml)都自带module-info.class,打包时这些文件重复导致警告。解决方法:

  1. 修改Eclipse导出选项:
    导出Runnable JAR时,在"Libraries handling"步骤选择**"Copy required libraries into a sub-folder next to the generated JAR"**,依赖库会被复制到JAR旁的单独文件夹,不会将多个module-info.class打包进同一个JAR,警告自然消失。

  2. 改用构建工具打包:
    Maven/Gradle的打包插件会自动处理依赖文件冲突,避免重复条目,同时能更规范地管理JavaFX依赖,减少手动导出的问题。

内容的提问来源于stack exchange,提问作者Berk Can Ulubas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 14:37:47