缺少 JavaFX 应用程序 class

Missing JavaFX application class

我有java这样的代码:

package mypackage;

import javafx.application.Application;
import javafx.stage.Stage;

public class MyApp extends Application{
    public static void main(String args[]){
        launch(args);
    }
    public void start(Stage primaryStage){
        primaryStage.show();
    }
}

我在 ~/myjava/src/mypackage/MyApp.class 编译了它。 然后,当我 运行 来自

~$ java -cp myjava/src mypackage/MyApp

为什么会出现这样的错误:

Missing JavaFX application class mypackage/MyApp

我正在使用 JDK 8.

那是因为您使用目录路径而不是完全限定的 class 名称调用您的应用程序。完全限定的 classname 由包名称和 class 名称组成。在您的情况下,这是 mypackage.MyApp.

假设您编译的 class 与源 .java 文件位于同一文件夹中,这样称呼它:

java -cp myjava/src mypackage.MyApp

安装 Java 15 和 JavaFX 13 以及其他一些更改后,我也收到“缺少 JavaFX 应用程序 class mypackage/MyApp”和在我的例子中,包名和应用程序是正确的。我正在使用一些 JDK15 预览功能,我需要 JVM 选项 --enable-preview。无奈之下,我开始改变事情,因为这曾经有效。当我删除 --enable-preview 选项时,我收到了有关我正在使用预览功能但没有指定它的错误消息。这告诉我装载程序实际上正在寻找我的应用程序。在这种情况下,错误消息“缺少 JavaFX 应用程序 class mypackage/MyApp”是不正确的。问题是我需要包含一些 MyApp 所依赖的用户实用程序 classes。一旦我在 class 路径中包含相关的 classes,一切都很好。