问题
I have java code like this:
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();
}
}
and I've compiled it at ~/myjava/src/mypackage/MyApp.class
.
then, when I'm running from
~$ java -cp myjava/src mypackage/MyApp
why getting error like:
Missing JavaFX application class mypackage/MyApp
I'm using JDK 8.
回答1:
That is because you are calling your application with a directory path instead of the fully qualified classname. The fully qualified classname is composed from the package name and the class name. In your case this is mypackage.MyApp
.
Assuming that your compiled class resides in the same folder as the source .java
file, call it this way:
java -cp myjava/src mypackage.MyApp
回答2:
After installing Java 15 and JavaFX 13 and some other changes I too was getting "Missing JavaFX application class mypackage/MyApp" and in my case the package name and application were correct. I was using some JDK15 preview functions and I needed the JVM option --enable-preview. In desperation I started to change things, as this used to work. When I removed the --enable-preview option I received error messages relating to the fact I was using preview functions and did not specify it. This told me the loader was in fact finding my application. The error message "Missing JavaFX application class mypackage/MyApp" was incorrect in this case. The problem was I needed to include some user utility classes that MyApp was dependent upon. Once I included the dependent classes in the classpath all was well.
来源:https://stackoverflow.com/questions/39308480/missing-javafx-application-class