JavaFX jar不随JAR文件一起加载,但在将代码作为应用程序编译时可以很好地加载

时间:2019-01-19 02:32:03

标签: java javafx jar nullpointerexception javafx-8

在IntelliJ中作为应用程序编译时,我可以很好地构建和启动程序。但是,当我打包和部署并尝试双击jar时,什么也没有发生。我决定使用Git Bash并从那里运行它,我看到它正在抛出NullPointerException。以下是JavaFX主类,我的文件结构以及抛出的错误。

为什么我在jar中得到了NullPointerException,但是在IntelliJ中进行编译时工作正常?

如果我遗漏任何信息,请告诉我。谢谢!

public class Main extends Application {

    private Stage stage;

    @Override
    public void start(Stage stage){
        this.stage = stage;
        this.stage.setTitle("My JavaFX App");
        initRootlayout();
    }

    private void initRootlayout(){
        try{
            Parent root = FXMLLoader.load(getClass().getResource("/view/main.fxml"));
            Scene scene = new Scene(root);
            stage.setScene(scene);
            scene.getStylesheets().add("css/default.css");
            stage.setResizable(false);
            stage.show();
        }

        catch(Exception e){
            throw new RuntimeException(e);
        }
    }

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

File Structure

Error being thrown

1 个答案:

答案 0 :(得分:1)

检查您的jar内容,主要是缺少您的资源文件夹。 如果使用IntelliJ Artifacts制作jar,请确保将资源文件夹包含在jar中,依次单击File-> Project Structure-> Artifacts->选择您的工件->输出布局选项卡-> add copy of->目录内容  ->选择资源文件夹。 然后重建你的罐子