【问题标题】:I have an error while I run throught cli interface: JavaFX runtime components are missing, and are required to run this application通过 cli 界面运行时出现错误:JavaFX 运行时组件丢失,需要运行此应用程序
【发布时间】:2019-07-22 18:30:43
【问题描述】:

我用 Intellij 开发了一个 javafx 应用程序。问题是当我通过 Intellij 运行程序时没有问题,而如果我通过命令行运行或只是双击,程序不会运行

错误:JavaFX 运行时组件丢失,是运行此应用程序所必需的

【问题讨论】:

  • 您使用哪个 JRE?找一些FAQs about the runtime environments here
  • java版本“12.0.2”
  • 那个不包含JavaFX的,你单独安装了吗?如果没有,请这样做...甚至可以使用 OpenJFX。
  • 我真的不知道要配置什么,因为我上一次 JavaFX 体验是在 JDK 和 JRE 包含 JavaFX 的时候。我认为你必须在你的操作系统中为它设置一个 PATH 。或者,如果在 IntelliJ 中可行,也可以使用 OpenJFX 进行编译。
  • 我已经安装了 OpenJFX。事实上,如果我通过 Intellij 运行程序,它运行得非常好。问题是如果我双击它或者我通过 cli 运行它

标签: java javafx


【解决方案1】:

从 Java 11 开始,JavaFX 不是 JDK 的一部分。您必须自己添加。

您还必须创建一个单独的类来保存您的main 方法。它可以是任何不扩展 JavaFX 类的类。这是因为 JavaFX 加载了原生库,而在 Java 启动主类的阶段,原生库路径不可用。

如果您的程序是一个模块,您只需将 JavaFX SDK 添加到您的模块路径:

java -p /home/sette/projects/example/build:/opt/javafx-jmods-12 \
    -m com.example.myapp/com.example.myapp.Startup

(如果您在 Windows 上运行,请将 / 替换为 \,并将 : 替换为 ;。)

如果您的程序不是模块,则需要同时包含 .jar 文件和本机库:

java -cp /home/sette/projects/example/build/MyApp.jar:/opt/javafx-sdk-12/lib/"*" \
    -Djava.library.path=/opt/javafx-sdk-12/lib \
    com.example.myapp.Startup

同样,主类(上述示例中的Startup)不得扩展 javafx.application.Application。它可以而且应该调用Application.launch

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-17
    • 2022-01-17
    • 1970-01-01
    • 2019-02-07
    • 2021-01-24
    • 1970-01-01
    • 2020-04-20
    • 2019-03-25
    相关资源
    最近更新 更多