Eclipse不会读取/运行fxml文件

时间:2016-04-22 20:01:55

标签: java eclipse javafx

我在Eclipse编写代码,并且正在使用javafx,fxml和CSS来为我的java类中的最终项目创建一个MAd Libs游戏。我已经从gluon安装了最新版本的场景构建器,以及来自java的最新JRE。这是我的代码

package application;
  import java.io.IOException;
  import java.util.ResourceBundle;

  import javafx.application.Application;
  import javafx.event.ActionEvent;
  import javafx.event.EventHandler;
  import javafx.fxml.FXMLLoader;
  import javafx.scene.Parent;
  import javafx.scene.Scene;
  import javafx.stage.Stage;

  public class Main extends Application{
    public static void main(String[] args) {
    launch(args);
}

@Override
public void start(Stage primaryStage) throws IOException {

        Parent root = FXMLLoader.load(getClass().getResource("scenebuilder.fxml"));
        Scene scene1 = new Scene(root);
        primaryStage.setTitle("Shane Ramos Final Project");
        primaryStage.setScene(scene1);
        primaryStage.show();
        } 
    }

每当我尝试运行它(让它调用我的fxml文件)时,它会在控制台中给我这个错误日志。

Exception in Application start method
java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(Unknown Source)
    at com.sun.javafx.application.LauncherImpl.launchApplication(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at sun.launcher.LauncherHelper$FXHelper.main(Unknown Source)
Caused by: java.lang.RuntimeException: Exception in Application start method
    at com.sun.javafx.application.LauncherImpl.launchApplication1(Unknown Source)
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$155(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException: Location is required.
    at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
    at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
    at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
    at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
    at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
    at javafx.fxml.FXMLLoader.load(Unknown Source)
    at application.Main.start(Main.java:21)
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$162(Unknown Source)
    at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(Unknown Source)
    at com.sun.javafx.application.PlatformImpl.lambda$null$173(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(Unknown Source)
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source)
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at com.sun.glass.ui.win.WinApplication.lambda$null$148(Unknown Source)
    ... 1 more
Exception running application application.Main

我已经尝试了一切我能想到的解决这个问题并且完全失败了。任何帮助表示赞赏。谢谢!

1 个答案:

答案 0 :(得分:0)

您必须先设置一个位置:

例如:

private Parent root;

...

FXMLLoader loader = new FXMLLoader(); loader.setLocation(YourClass.class.getResource("yourFile.fxml"));

root = (Parent) loader.load();

并确保您的fxml文件位于正确的文件夹中。

根据您的代码,您的fxml文件和Main.java应该位于系统上的同一文件夹中。