我用Intellij开发了一个javafx应用程序。问题是,当我通过Intellij运行程序时,它没有问题,而如果我通过命令行运行或只是双击,程序无法运行
错误:JavaFX 运行时组件丢失,运行此应用程序需要这些组件
从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。