我有这样的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.
你能帮助我吗?
答案 0 :(得分:5)
这是因为您使用目录路径而不是完全限定的类名调用应用程序。完全限定的类名由包名和类名组成。在您的情况下,这是mypackage.MyApp
。
假设您编译的类与源.java
文件位于同一文件夹中,请按以下方式调用:
java -cp myjava/src mypackage.MyApp
答案 1 :(得分:0)
在安装 Java 15 和 JavaFX 13 以及其他一些更改后,我也收到了“缺少 JavaFX 应用程序类 mypackage/MyApp”的消息,在我的情况下,包名称和应用程序是正确的。我正在使用一些 JDK15 预览功能,我需要 JVM 选项 --enable-preview。无奈之下,我开始改变事情,因为这曾经奏效。当我删除 --enable-preview 选项时,我收到了与我使用预览功能相关的错误消息,但没有指定它。这告诉我加载程序实际上正在查找我的应用程序。在这种情况下,错误消息“缺少 JavaFX 应用程序类 mypackage/MyApp”不正确。问题是我需要包含一些 MyApp 所依赖的用户实用程序类。一旦我在类路径中包含了依赖类,一切都很好。