JavaFX打包成jar之后,cmd运行,报错缺少JavaFX 运行时组件
# 问题描述
在本地编辑器运行 JavaFX 应用程序时,可以正常运行,但是当我们将 JavaFX 打包成 jar 包以后,用命令打开时,会提示 JavaFX 报错缺少 JavaFX 运行时组件
java -jar xx.jar
# 原因分析:
因为 Java 8 之后,JavaFX 从 JDK 中分离了出来,在 Java 9 时,Java 引入了 Java 模块系统。从那之后,JavaFX 需要使用 Java 模块系统来运行 JavaFX。作者是用的 Java17 写的,在本地的 Java17 中,没有 JavaFX,因为 JavaFX 从 JDK 分离了,所以用 Java 命令打开时不能正常打开 jar 包。
# 解决方案:
# 方法一、Java 模块系统
构建 Java 模块系统需要在顶级目录中添加一个模块声明文件 module-info.java
# 方法二、使用引导类
作者在操作时,将 Java 模块系统删除之后再用引导类,还是报错,我恢复 module-info.java 后再使用引导类,就可以正常打开了
使用引导类来启动真正的主类,如下图所示:
Main.java
App.java
注意:用引导类之后,MANIFEST.MF 的 Main-Class 也要改为引导类
# 方法三、使用 Java8(自带 JavaFX)不推荐
因为 JavaFX 项目至少需要 Java11,Java8 虽然自带 JavaFX 很方便,但是适配性较差
ps: 当然也可以用 java8 创建 JavaFX 项目,这就不演示了
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 月光倾泻与山海,你跌进我的梦里!