JavaFX“位置是必需的?!奔词顾谕粋€包中我試圖讓我的JavaFX程序運行但是遇到了一些困難。我一直收到'java.lang.NullPointerException錯誤:位置是必需的。' fxml文件與Application類位于同一個包中。這是我非常簡單的代碼:package com.kromalights.designer.entry;import javafx.application.Application;import javafx.fxml.FXMLLoader;import javafx.scene.Parent;import javafx.scene.Scene;import javafx.stage.Stage;public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
Parent root = FXMLLoader.load(getClass().getResource("main.fxml"));
primaryStage.setTitle("Kromalights Designer");
primaryStage.setScene(new Scene(root, 300, 275));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}}這是我的main.fxml文件的副本:<?xml version="1.0" encoding="UTF-8"?><?import java.lang.*?><?import javafx.scene.layout.*?><?import javafx.scene.layout.BorderPane?><?scenebuilder-stylesheet mailStyles.css?><?import java.net.*?><BorderPane prefHeight="300.0" prefWidth="300.0" xmlns:fx="http://javafx.com/fxml/1"
xmlns="http://javafx.com/javafx/2.2"
fx:controller="com.kromalights.designer.entry.Controller">
<bottom>
<Pane prefHeight="200.0" prefWidth="200.0"/>
</bottom>
<center>
<Pane prefHeight="200.0" prefWidth="200.0"/>
</center>
<left>
<VBox prefHeight="200.0" prefWidth="100.0"/>
</left>
<top>
<HBox prefHeight="100.0" prefWidth="200.0"/>
</top>
<stylesheets>
<URL value="@mainStyles.css" />
</stylesheets></BorderPane>控制器類確實存在,并且位于fxml文件中指定的包中。我的所有名字都是正確的,我認為應該是這樣。我錯過了什么?我確實嘗試重命名我的fxml文件,以防它出現(xiàn)名稱問題。請幫忙。僅供參考,我在OSX上使用Intellij IDEA。更新:這是一個Maven問題。我為這個項目設置了Maven并導致了這個問題。我暫時刪除了Maven,所以我可以繼續(xù)工作而不用它。有沒有人知道如何在使用Maven時最好地處理這個問題?
3 回答

婷婷同學_
TA貢獻1844條經(jīng)驗 獲得超8個贊
在我的情況下,以上所有都不是問題。
我替換時解決了我的問題:
getClass().getResource("ui_layout.fxml")
用:
getClass().getClassLoader().getResource("ui_layout.fxml")

絕地無雙
TA貢獻1946條經(jīng)驗 獲得超4個贊
URL url = new File("src/main/java/ua/adeptius/goit/sample.fxml").toURL();Parent root = FXMLLoader.load(url);
這對我有幫助,因為
getClass.getResource("path")
總是讓我無效;
添加回答
舉報
0/150
提交
取消