JavaFX jar执行会抛出invocationtargetexception

时间:2017-02-26 15:21:35

标签: java javafx jar

我正在开发一个接受用户输入并将其存储在文件中的JavaFX应用程序。为了设置场景,我正在使用CSS。

我正在使用的是netbeans,我将所有类和文件打包到一个jar文件中

These are all the files inside the project directory

public void start(Stage primaryStage) throws Exception {

    String[] noti = {"Loading...","Verifying user...","Gathering info...","Success"};

    primaryStage.initStyle(StageStyle.UNDECORATED);
    VBox root = new VBox();
    Scene scene = new Scene(root, 1100, 650);

    Label label = new Label("Loading...");


    ProgressBar progressBar = new ProgressBar(0.1);


    Thread thr = new Thread(new Runnable() {
        @Override
        public void run() {

            try{

                Thread.sleep(1500);
                progressBar.setProgress(0.2);

            }catch(Exception e){}

        }

    });



    primaryStage.setScene(scene);
    root.getChildren().addAll(progressBar, label);
    scene.getStylesheets().add( getClass().getResource("view/Main.CSS").toExternalForm() );
    File file = new File("C:\\Users\\SVNPC\\Documents\\NetBeansProjects\\portee\\TEST_1");

    if( !file.exists() ){
        file.mkdir();         
    }

    file = new File("C:\\Users\\SVNPC\\Documents\\NetBeansProjects\\portee\\TEST_1\\core.txt");


    if( !file.exists() && !file.isDirectory() ){


        // Create the file and Fill it with user data


    }

    else{



    }

    primaryStage.show();
    thr.start();

}

每当我尝试执行jar文件时,它都会抛出invocationtargetexception。 我是JavaFX的新手,我不知道是什么导致jar抛出这么多异常

This happened when I tried to run the JAR

1 个答案:

答案 0 :(得分:0)

您的错误是NullPointerException文件第129行的Splash.java

你告诉我你在那一行的代码是:

scene.getStylesheets().add( getClass().getResource("view/Main.CSS").toExternalForm() );

因此,您必须在分配前添加此检查:

你可以保证场景不为空,因为你在这一行:

Scene scene = new Scene(root, 1100, 650);

因此检查将成为:

if (scene.getStylesheets() != null && getClass() != null
&& getClass().getResource("view/Main.CSS") != null) {
    scene.getStylesheets().add(
       getClass().getResource("view/Main.CSS").toExternalForm() );
}

因为当您尝试使用null对象的属性时NullPointerException会上升。