无法启动位于另一个 class 中的 JavaFX GUI
Unable to start JavaFX GUI located in another class
我正在尝试启动位于 Main class 的另一个 class 中的 JavaFX GUI。这是我的 JavaFX GUI class:
public class JavaFXGUI extends Application{
@Override
public void start(Stage primaryStage) throws Exception{
Parent root = FXMLLoader.load(getClass().getResource("TextManipulator.fxml"));
primaryStage.setTitle(i18n.getString("program_full_name"));
primaryStage.setScene(new Scene(root));
primaryStage.show();
}
}
这个class几乎完全是从Oracle自己的教程中复制过来的,并且当方法在main class中时完美运行,但现在我已经移动了它,当我调用
JavaFXGUI.launch(JavaFXGUI.class, args)
从 main 方法,一切都编译得很好,但是当我 运行:
时,我不断重复以下错误
Exception in thread "JavaFX Application Thread" java.lang.NoClassDefFoundError: Could not initialize class com.sun.javafx.logging.PulseLogger
at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:456)
at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:431)
at com.sun.javafx.tk.quantum.QuantumToolkit.lambda$runToolkit3(QuantumToolkit.java:298)
at com.sun.javafx.tk.quantum.QuantumToolkit$$Lambda/950205023.run(Unknown Source)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
at com.sun.glass.ui.gtk.GtkApplication.lambda$null(GtkApplication.java:126)
at com.sun.glass.ui.gtk.GtkApplication$$Lambda/331637932.run(Unknown Source)
at java.lang.Thread.run(Thread.java:745)
如果有必要,我很乐意 post 更多代码,我只是不确定哪些代码会有帮助,所以如果我遗漏了一些重要的东西,请发表评论。提前致谢!
我发现,在我的案例中,问题是由我使用 OpenJDK 而不是 Oracle 引起的。要检查的其他一些事情是 Java 版本、语言级别,就像我的情况一样,确保您尝试使用的功能在您正在使用的 JRE/JDK 中可用。
我正在尝试启动位于 Main class 的另一个 class 中的 JavaFX GUI。这是我的 JavaFX GUI class:
public class JavaFXGUI extends Application{
@Override
public void start(Stage primaryStage) throws Exception{
Parent root = FXMLLoader.load(getClass().getResource("TextManipulator.fxml"));
primaryStage.setTitle(i18n.getString("program_full_name"));
primaryStage.setScene(new Scene(root));
primaryStage.show();
}
}
这个class几乎完全是从Oracle自己的教程中复制过来的,并且当方法在main class中时完美运行,但现在我已经移动了它,当我调用
JavaFXGUI.launch(JavaFXGUI.class, args)
从 main 方法,一切都编译得很好,但是当我 运行:
Exception in thread "JavaFX Application Thread" java.lang.NoClassDefFoundError: Could not initialize class com.sun.javafx.logging.PulseLogger
at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:456)
at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:431)
at com.sun.javafx.tk.quantum.QuantumToolkit.lambda$runToolkit3(QuantumToolkit.java:298)
at com.sun.javafx.tk.quantum.QuantumToolkit$$Lambda/950205023.run(Unknown Source)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
at com.sun.glass.ui.gtk.GtkApplication.lambda$null(GtkApplication.java:126)
at com.sun.glass.ui.gtk.GtkApplication$$Lambda/331637932.run(Unknown Source)
at java.lang.Thread.run(Thread.java:745)
如果有必要,我很乐意 post 更多代码,我只是不确定哪些代码会有帮助,所以如果我遗漏了一些重要的东西,请发表评论。提前致谢!
我发现,在我的案例中,问题是由我使用 OpenJDK 而不是 Oracle 引起的。要检查的其他一些事情是 Java 版本、语言级别,就像我的情况一样,确保您尝试使用的功能在您正在使用的 JRE/JDK 中可用。