【问题标题】:Missing JavaFX application class缺少 JavaFX 应用程序类
【发布时间】:2017-01-11 12:27:36
【问题描述】:

我有这样的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。

【问题讨论】:

  • cp 用作myjava/src 似乎很可疑。那是带有.class 文件的目录吗? (我希望myjava/build 或类似的东西)

标签: java javafx javafx-2 javafx-8


【解决方案1】:

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

假设您编译的类与源.java 文件位于同一文件夹中,这样调用它:

java -cp myjava/src mypackage.MyApp

【讨论】:

  • 谢谢@hotzst,它工作正常。我认为'/'和'。是一样的,但不一样:)
  • 或者,在我的例子中,我为 jar 文件指定了一个类路径,而不是我需要的 -cp ".;myjar.jar"...
【解决方案2】:

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

【讨论】:

  • 感谢您回答问题。虽然--enable-preview 标志可以帮助解决一些问题,例如您所描述的问题(“我正在使用预览功能”),但不幸的是,忘记该标志将不会给出错误,而是以下一个:java.lang.UnsupportedClassVersionError: Preview features are not enabled for ... (class file version ...). Try running with '--enable-preview'(见nipafx.dev/enable-preview-language-features/…
猜你喜欢
  • 1970-01-01
  • 2020-03-13
  • 2014-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-21
  • 2017-07-17
  • 1970-01-01
相关资源
最近更新 更多