我有一个用 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 文件成为剩余的选项。
然而,the Oracle documentation on JMODs说:“JMOD 文件格式让您可以聚合除 .class 文件、元数据和资源之外的文件。这种格式可传输但不可执行,这意味着您可以在编译时或链接时使用它,但不能在运行时使用,”所以他们似乎不会帮助我运行应用程序。
问题:
- 如何使用 Java 11 运行时运行上面定义的
app.jar
? - 是否有说明如何执行此操作的文档,如果有,说明在何处?
最佳答案
您似乎错过了将 PATH_TO_FX 环境变量添加到您的系统。 You can find a guide on how to do that here:
如果是 Java 8 应用程序,最简单的选择就是 getting Oracle JDK 8并将其定义为系统环境中的JDK。
关于java - 如何使用 Java 11 运行已编译的 Java 8 JavaFX 应用程序 jar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64545729/