我正在开发一个接受用户输入并将其存储在文件中的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抛出这么多异常
答案 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
会上升。