在cli界面中运行时出现错误:JavaFX运行时组件丢失,并且是运行此应用程序所必需的

时间:2019-07-22 18:30:43

标签: java javafx

我已经用Intellij开发了javafx应用程序。问题是,当我通过Intellij运行程序时,它没有问题,而如果我通过命令行运行或双击运行,则程序无法运行

错误:缺少JavaFX运行时组件,并且是运行此应用程序所必需的

1 个答案:

答案 0 :(得分: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