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

标签 java javafx executable-jar java-module

我有一个用 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/

相关文章:

Java Regex查找字符串中两个单词之间的时间

Android 上的 JavaFX - Hello world 不断崩溃

java 将 HBox 对齐到左下角

java - .jar 文件无法运行? (我觉得我错过了一些明显的东西,在来这里之前自己寻找解决方案。)

java - 在另一台计算机上按完全相同的键(复制键操作)

java - 使用 Java 多线程实现交通信号

java - 获取完整的用户名 siteminder

菜单栏中的 JavaFX ChoiceBox

java - 打包在可执行 jar 中的可写数据库

java - 可执行Jar文件将无法运行: error in command prompt