Eclipse JavaFX展示台
我将一个JavaFX项目从NetBeans导入Eclipse。奇怪的是,我无法执行在NetBeans中运行良好的代码。我用SceneBuilder设置了一个小gui。我只想展示一点.fxml——目前根本没有函数代码。我的主要课程是这样的:Eclipse JavaFX展示台,eclipse,netbeans,javafx,fxml,efxclipse,Eclipse,Netbeans,Javafx,Fxml,Efxclipse,我将一个JavaFX项目从NetBeans导入Eclipse。奇怪的是,我无法执行在NetBeans中运行良好的代码。我用SceneBuilder设置了一个小gui。我只想展示一点.fxml——目前根本没有函数代码。我的主要课程是这样的: public class Main extends Application { public void start(Stage stage) throws Exception { Parent root = FXMLLoader.load(g
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(本机方法)位于
位于的sun.reflect.NativeMethodAccessorImpl.invoke(未知源)
sun.reflect.DelegatingMethodAccessorImpl.invoke(未知源)位于
java.lang.reflect.Method.invoke(未知源代码)位于
com.sun.javafx.application.LaunchImpl.launchApplicationWithArgs(未知
来源)在
com.sun.javafx.application.LaunchImpl.launchApplication(未知
源代码)位于sun.reflect.NativeMethodAccessorImpl.invoke0(本机
方法)在sun.reflect.NativeMethodAccessorImpl.invoke(未知
源)位于sun.reflect.DelegatingMethodAccessorImpl.invoke(未知
位于java.lang.reflect.Method.invoke(未知源代码)的
sun.launcher.launchelper$FXHelper.main(未知源)由以下原因引起:
java.lang.RuntimeException:
com.sun.javafx.application.LaunchImpl.launchApplication1(未知
来源)在
com.sun.javafx.application.launchempl.lambda$launchApplication$156(未知
源代码)位于java.lang.Thread.run(未知源代码),原因如下:
java.lang.NullPointerException:需要位置。在
javafx.fxml.fxmloader.loadImpl(未知源)位于
javafx.fxml.fxmloader.loadImpl(未知源)位于
javafx.fxml.fxmloader.loadImpl(未知源)位于
javafx.fxml.fxmloader.loadImpl(未知源)位于
javafx.fxml.fxmloader.loadImpl(未知源)位于
javafx.fxml.fxmloader.load(未知源)位于
core.Main.start(Main.java:27)位于
com.sun.javafx.application.launchempl.lambda$launchApplication1$163(未知
来源)在
com.sun.javafx.application.platformpl.lambda$runAndWait$176(未知)
来源)在
com.sun.javafx.application.platformpl.lambda$null$174(未知)
源代码)位于java.security.AccessController.doPrivileged(本机方法)
在
com.sun.javafx.application.platformpl.lambda$runLater$175(未知
来源)com.sun.glass.ui.InvokeLaterDispatcher$Future.run(未知
来源)com.sun.glass.ui.win.WinApplication.\u runLoop(本机)
方法)在
com.sun.glass.ui.win.WinApplication.lambda$null$149(未知来源)
... 运行应用程序core.Main时出现1个以上异常
这是我的项目结构:
我做错了什么?或者eclipse在这里期待着什么,而NetBeans没有 就像@James\u D建议的那样,我可以使用
System.out.println(getClass().getResource("Main.class"));
及
结果证明,我的类路径一定是在将项目从运行NetBeans的ubuntu笔记本复制到运行10和Eclipse的主Windows计算机时被破坏的。我修复了它,现在一切正常。就像@James\u D建议的那样,我可以使用
System.out.println(getClass().getResource("Main.class"));
及
结果证明,我的类路径一定是在将项目从运行NetBeans的ubuntu笔记本复制到运行10和Eclipse的主Windows计算机时被破坏的。我修复了它,现在一切正常。错误消息说找不到FXML文件。假设您已将FXML文件复制到源文件夹中;确保Eclipse将其与类文件一起部署。这可能有助于显示您的项目布局。看起来是这样,但我无法解释原因。我的gui软件包同时包含Main.java和FXMLDocument.fxml是否将fxml文件复制到与Main.class文件相同的目录中?这就是在运行时加载它的地方。是的,它们都在同一个目录中。正如我已经说过的,在NetBeans中,这就像一种魅力。但是我想将项目导出到Eclipse,因为我更喜欢这个IDE。不知道为什么eclipse编译器找不到.fxml::当您从eclipse运行应用程序时,它会将.java文件编译到某个位置(可配置,但可能是一个名为
bin
的文件夹,它与src
位于同一父文件夹中),然后从那里运行。NetBeans可能有不同的设置。因此,如果您从NetBeans复制类文件,您可能有两个类文件。您需要确保FXML文件与Eclipse编译时生成的类文件位于同一文件夹中(因此确保Eclipse正在部署FXML文件)。您的问题需要包含项目结构,包括输出文件夹(即bin)。错误消息表示找不到FXML文件。假设您已将FXML文件复制到源文件夹中;确保Eclipse将其与类文件一起部署。这可能有助于显示您的项目布局。看起来是这样,但我无法解释原因。我的gui软件包同时包含Main.java和FXMLDocument.fxml是否将fxml文件复制到与Main.class文件相同的目录中?这就是在运行时加载它的地方。是的,它们都在同一个目录中。正如我已经说过的,在NetBeans中,这就像一种魅力。但是我想将项目导出到Eclipse,因为我更喜欢这个IDE。不知道为什么eclipse编译器找不到.fxml::当您从eclipse运行应用程序时,它会将.java文件编译到某个位置(可配置,但可能是一个名为bin
的文件夹,它与src
位于同一父文件夹中),然后从那里运行。NetBeans可能有不同的设置。因此,如果您从NetBeans复制类文件,您可能有两个类文件。您需要确保FXML文件与Eclipse编译时生成的类文件位于同一文件夹中(因此确保Eclipse正在部署FXML文件)。您的问题包括您的项目结构,包括输出文件夹(即bi
System.out.println(getClass().getResource("FXMLDocument.fxml"));