【发布时间】:2021-01-23 17:11:55
【问题描述】:
我已经用 jpackage 打包了一个 JavaFx (14) 项目,以便在 .exe 设置中部署。
项目依赖为:
- Java 14.0.2
- JavaFx 14.0.2.1
- JRE 1.8.0_271(已删除)
因此,在我在几台机器(大约 6 台)上部署期间,它在几台机器上成功,但在其他机器上我有这个错误:
JVM can not launch
尽管所有依赖项都已正确安装在这些机器上,并且环境变量定义良好。
谁能帮帮我
经过一些修复(由@Slaw和@mipa提到,我生成了一个新包,安装它。但是当我运行软件(myApp.exe)时,我有这个错误
Failed to lunch JVM
经过一些研究,解决方案是使用 java 命令创建一个批处理文件,该命令将运行位于 C:\Program Files\ 软件文件夹中的 .jar 文件
cd "C:\Program Files\software\app"
java --module-path "C:\Program Files\Java\javafx-sdk-14.0.2.1\lib" --add-modules=ALL-MODULE-PATH --add-exports javafx.graphics/com.sun.javafx.sg.prism=ALL-UNNAMED -jar software.jar
我已经完成了,软件运行得很好,但是有没有其他优化方案可以直接运行软件而不需要批处理文件?
因为在某些计算机上,批处理没有运行软件,返回同样的错误:Failed to lunch JVM
请帮忙
【问题讨论】:
-
如果您使用 Java/JavaFX 14 进行开发,为什么还要使用 JRE 8?我也不清楚你如何使用
jpackage,但不知何故依赖于 JRE 8(或任何外部 JRE)。 -
当您正确使用 jpackage 创建一个 .exe 时,您将不再对您的部署目标有任何依赖。正如@Slaw 已经说过的 - 你的整个设置看起来很奇怪。
-
@Slaw 感谢您的评论,我刚刚读到 Java 运行时环境已停止使用 Java 11。由于 14 > 11,Java 14 没有 JRE。所以我会修复它。
-
好吧@mipa 我会修复我的设置并再次尝试使用 jpackage 打包
-
如果您必须手动添加
--module-path和--add-modules,那么您在打包应用程序时未能包含JavaFX。简而言之,您需要告诉jpackage包括JavaFX。确保将其指向 JMOD 文件而不是 JAR 文件。您可以从获得 JavaFX SDK(即 Gluon)的同一位置获得 JMOD 文件。您可能也希望阅读此内容:docs.oracle.com/en/java/javase/15/jpackage/…
标签: java javafx deployment jpackage