我已经用Intellij开发了javafx应用程序。问题是,当我通过Intellij运行程序时,它没有问题,而如果我通过命令行运行或双击运行,则程序无法运行
错误:缺少JavaFX运行时组件,并且是运行此应用程序所必需的
答案 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。