【问题标题】:JavaFX application fail to launch with native exe bundle created with intellij ideJavaFX 应用程序无法使用 intellij ide 创建的本机 exe 包启动
【发布时间】:2021-02-25 14:03:09
【问题描述】:

我已经构建了一个可以通过其 jar 文件执行的 JavaFX 应用程序。但是,如果我尝试使用本机 exe 包运行它,我会收到两个弹出窗口:

错误调用方法

JVM启动失败

应用程序无法启动。

Javafx 应用程序是使用 intellij ide 构建的。

项目结构如下;

在弹出窗口显示后启动应用程序时..

配置文件如下所示:-

打包的jar文件正在正常执行... 使用启动 exe 文件启动应用程序时会出现问题。 请告诉我可能出了什么问题?

更新: 似乎构建输出运行时/bin 目录不包含 java.exe 文件,因此我认为应用程序不会启动。 尝试运行应用程序时的输出如下:

我已经用 intellij idea 构建了应用程序,我认为这有问题。请调查此事。

更新:-

【问题讨论】:

  • 再次检查 Artifact Configuration -> Java FX 选项卡下的选项,包括 Native bundle: 类型。还要确保尝试使用 1.8 JDK 启动它(将其添加为 JAVA_HOME 位置)。
  • 先生,我正在使用 jdk15

标签: intellij-idea javafx


【解决方案1】:

使用为您捆绑的运行时从命令行运行它:

如果你制作了一个可执行的 Jar(带有适当的清单,指定了类路径和主类)

cd firecap
runtime\bin\java -jar app\libs\your-main.jar

如果您没有可执行的 jar,请使用类似

cd firecap
runtime\bin\java -cp app\libs\*.* your.main.class.name

由于 java.exe 是一个控制台程序,您应该能够看到完整的错误输出,以便更好地了解问题所在。

您很可能错过了在运行时中包含所需的模块。

也有可能你遇到了我最近发现的一个错误:https://bugs.openjdk.java.net/browse/JDK-8254920

我用这个命令创建了我的运行时映像:

"C:\Program Files\BellSoft\LibericaJDK-15-Full\bin\jlink.exe"  --no-header-files --no-man-page, --compress=1 --add-modules java.management,java.logging,javafx.controls,java.xml,java.desktop --output C:\MyProject\build\image\runtime

但是根据您需要的模块,您的可能会有所不同。另请注意,我使用了来自 BellSoft 的 JDK,其中包含 JavaFX 模块以使其更容易。

【讨论】:

  • 正如你所说,我已经运行了应用程序,但它不工作,当我检查 bin 目录时,没有 java.exe 应用程序文件。我认为应用程序因此而崩溃。我认为 intellij 的想法没有正确构建应用程序。我该如何克服这个问题。
  • runtime\bin 文件夹中不必有 java.exe。如果使用 jpackage,则使用它的启动器 exe,不需要 java.exe。如果您可以访问 jpackage 选项,请添加 --win-console 以便您可以轻松查看错误消息。
  • 是否有可以共享的构建日志或特定的配置选项?我不使用 Intellij Idea(我发现它需要太多配置才能使其正常工作),所以我不知道它具体要做什么。如果你有一个 Gradle 构建文件或类似的东西会很有帮助。
  • 先生,您能否提供一些链接,以便我可以使用 gradle 构建和部署 javafx。
  • 我已经尝试了 openjfx 中的所有内容,但没有工作,因为我对 gradle 有一点了解。
猜你喜欢
  • 2016-01-05
  • 1970-01-01
  • 1970-01-01
  • 2019-05-23
  • 1970-01-01
  • 1970-01-01
  • 2014-05-27
  • 1970-01-01
相关资源
最近更新 更多