我从NetBeans导入了一个JavaFX项目到Eclipse。奇怪的是,我无法执行在NetBeans中正常工作的代码。我用SceneBuilder设置了一个小gui。我只是想展示一点。fxml—在这一点上没有任何功能代码。我的主类是这样的:
public class Main extends Application {
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));
Scene scene = new Scene(root);
stage.setScene(scene);
stage.setTitle(Strings.appName);
stage.getIcons().add(new Image("sql.png"));
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
但是当我尝试执行代码时,eclipse编译器返回:
应用程序启动方法异常java.lang.reflect.InvocationTargetException在sun.reflect.NativeMethodAccessorImpl。invoke0(本机方法)atsun.reflect.NativeMethodAccessorImpl。调用(未知源)atsun.reflect.DelegatingMethodAccessorImpl。调用(未知源)atjava.lang.reflect.Method。调用(未知源)atcom.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(未知源)com.sun.javafx.application.LauncherImpl.launchApplication(未知源)在sun.reflect.Native . emethodaccessorimpl .invoke0(Native方法)在sun.reflect. native emethodaccessorimpl .invoke(未知来源:sun.reflect.DelegatingMethodAccessorImpl.invoke(未知java.lang.reflect.Method。调用(未知源)atsun.launcher.LauncherHelper FXHelper美元。主要(来源不明)原因:java.lang.RuntimeException:应用程序启动方法中的异常com.sun.javafx.application.LauncherImpl.launchApplication1(未知源)com.sun.javafx.application.LauncherImpl.lambda launchApplication 156美元(未知java.lang.Thread.run(未知来源)由以下原因引起:nullpointerexception: Location是必需的。在javafx.fxml.FXMLLoader。加载mpl(未知来源)在javafx.fxml.FXMLLoader。加载mpl(未知来源)在javafx.fxml.FXMLLoader。加载mpl(未知来源)在javafx.fxml.FXMLLoader。加载mpl(未知来源)在javafx.fxml.FXMLLoader。加载mpl(未知来源)在javafx.fxml.FXMLLoader。加载(未知来源)在core.Main.start (Main.java: 27)com.sun.javafx.application.LauncherImpl.lambda launchApplication1 163美元(未知源)com.sun.javafx.application.PlatformImpl.lambda runAndWait 176美元(未知源)com.sun.javafx.application.PlatformImpl.lambda零174美元(未知来源)java.security.AccessController。doPrivileged(本地方法)在com.sun.javafx.application.PlatformImpl.lambda runLater 175美元(未知来源:com.sun.glass.ui.InvokeLaterDispatcher$Future.run(未知源代码)在com.sun.glass.ui.win.WinApplication._runLoop(原生方法)com.sun.glass.ui.win.WinApplication。λ零149美元(未知来源)…1更多异常运行应用程序核心。主要
这是我的项目结构:
SQL │ .classpath │ .project │ ├───.settings │ org.eclipse.jdt.core.prefs │ ├───bin │ ├───gui │ │ FXMLDocument.fxml │ │ FXMLDocumentController.class │ │ Main.class │ │ sql.png │ │ │ ├───print │ │ Allgemein.class │ │ Mahnung.class │ │ PDF.class │ │ Rechnung.class │ │ │ └───various │ Strings.class │ └───src └───gui FXMLDocument.fxml FXMLDocumentController.java Main.java
我在这里做错了什么?还是eclipse在这里期待一些NetBeans没有期待的东西?
就像@James_D建议的那样,我能够使用
跟踪问题System.out.println(getClass().getResource("Main.class"));
和
System.out.println(getClass().getResource("FXMLDocument.fxml"));
原来我的类路径一定是在将项目从运行NetBeans的ubuntu笔记本电脑复制到运行10和Eclipse的主Windows机器时被破坏了。我把它修好了,现在一切都正常了。