Runnable Jar文件不起作用,但源代码工作正常。 Maven Project JavaFX

时间:2017-05-29 17:57:00

标签: java maven user-interface javafx nullpointerexception

我目前正在学习JavaFX并尝试构建小型GUI。我觉得我做得很好。唯一的问题是当我从Eclipse运行程序时,它运行顺畅但当我将其导出为Runnable Jar File并尝试在外部运行时,它不起作用。

这是一个maven项目,下面是我的程序的主要方法:

public class Main extends Application {

private Stage stage;
@Override
public void start(Stage primaryStage) throws Exception{
    Parent root = FXMLLoader.load(getClass().getResource("/view/main.fxml"));
    this.stage = primaryStage;
    primaryStage.setTitle("SLATE");
    primaryStage.setScene(new Scene(root, 800, 700));
    primaryStage.show();
}

public Stage getStage() {
    return stage;
}

public static void main(String[] args) {
    launch(args);
}
}

我尝试通过从终端运行JAR来调试它,下面是错误:

Exception in Application start method
java.lang.reflect.InvocationTargetException
  .....
Caused by: java.lang.NullPointerException: Location is required.
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3207)

我觉得它与我想的资源路径有关但我无法以任何方式修复它。奇怪的是它可以在Eclipse中运行,但JAR文件没有相同的代码。

非常感谢您的帮助。注意:Project View

1 个答案:

答案 0 :(得分:0)

您的视图的路径似乎是错误的(因为它使用当前类的包名称),请尝试这样做:

FXMLLoader loader = new FXMLLoader();
Parent rootNode = (Parent) loader.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("view/main.fxml"));