如何使用Java 11运行编译的Java 8 JavaFX应用程序jar?



我有一个用Java 8编译的可执行jar文件,其中包含一个名为app.jar的JavaFX应用程序。

当我安装了Java 8时,我可以简单地使用java -jar app.jar运行它。

现在我只安装了Java 11,运行上面的命令会生成以下错误:

Error: Could not find or load main class <...>
Caused by: java.lang.NoClassDefFoundError: javafx/application/Application

因为Java 11不再包含JavaFX。

所以我考虑安装JavaFX。 openjfx.org 以两种形式提供JavaFx:SDK和JMOD文件。

我想我不需要SDK,因为我不是在创建JavaFX,而只是在运行一个。这会将 JMOD 文件保留为剩余选项。

但是,关于JMOD的Oracle文档说:"JMOD文件格式允许您聚合除.class文件,元数据和资源以外的文件。这种格式是可传输的,但不能执行,这意味着你可以在编译时或链接时使用它,但不能在运行时使用它,"所以看起来它们不会帮助我运行应用程序。

问题:

  • 如何使用 Java 11 运行时运行上述定义的app.jar
  • 是否有任何文档解释如何执行此操作,如果是,在哪里?

似乎您错过了将PATH_TO_FX环境变量添加到系统中。您可以在此处找到有关如何执行此操作的指南:

如果它是一个Java 8应用程序,最简单的选择就是获取Oracle JDK 8并将其定义为系统环境中的JDK。

最新更新