2015-05-07 32 views
0

我正面臨同樣的問題!當從另一個fxml文件的控制器中輸入fxml文件時出現空點異常

我將ImageView添加到按鈕,並使用SceneBuilder將圖像路徑添加到FXML文件中的ImageView。當我通過Eclipse IDE運行它時工作正常,但當以jar文件運行時沒有問題。

從Button中刪除ImageView後,即使以jar的形式運行,它也能正常工作。

但是,現在我在不同的場景中遇到了同樣的問題!

我使用3個FXML文件構建整個窗口。

  1. MainWindow(邊框窗格) - 它包含一個菜單欄和添加到邊框窗格頂部位置的工具欄。
  2. CenterWindow(錨窗格)
  3. ButtomWindow(錨窗格)

在主窗口,我嘗試添加的CenterWindow和ButtomWindow這是在不同FXML文件的控制器。

但是,NullPointerException發生在我嘗試加載fxml文件的行的MainWindow控制器。它說在特例中需要位置。 我已經提取了jar文件並進行了檢查,fxml文件在jar裏面。 有人可以請幫忙。

封裝結構:

com.example.app -- contains Main.java which has main() method 
com.example.app.controller -- MainWindowController.java, CenterWindowController.java, ButtomWindowController.java 
com.example.app.view -- MainWindow.fxml, CenterWindow.fxml, ButtomWindow 

在Main.java我加載它加載罰款MainWindow.fxml。然後在MainWindowController.java我試圖加載CenterWindow.fxml & ButtomWindow它給出異常。

異常日誌:

javafx.fxml.LoadException: 
file:/C:/Users/a27490989/Documents/NetBeansProjects/AirbusDS/dist/AirbusDS.jar!/ 
ds/airbus/simulator/view/MainWindow.fxml 

    at javafx.fxml.FXMLLoader.constructLoadException(Unknown Source) 
    at javafx.fxml.FXMLLoader.loadImpl(Unknown Source) 
    at javafx.fxml.FXMLLoader.loadImpl(Unknown Source) 
    at javafx.fxml.FXMLLoader.loadImpl(Unknown Source) 
    at javafx.fxml.FXMLLoader.loadImpl(Unknown Source) 
    at javafx.fxml.FXMLLoader.loadImpl(Unknown Source) 
    at javafx.fxml.FXMLLoader.loadImpl(Unknown Source) 
    at javafx.fxml.FXMLLoader.loadImpl(Unknown Source) 
    at javafx.fxml.FXMLLoader.load(Unknown Source) 
    at ds.airbus.simulator.Main.start(Main.java:22) 
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$153(Unknown Source) 
    at com.sun.javafx.application.LauncherImpl$$Lambda$51/747183799.run(Unknown Source) 
    at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$166(Unknown Source) 
    at com.sun.javafx.application.PlatformImpl$$Lambda$44/584634336.run(Unknown Source) 
    at com.sun.javafx.application.PlatformImpl.lambda$null$164(Unknown Source) 
    at com.sun.javafx.application.PlatformImpl$$Lambda$47/94326726.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$165(Unknown Source) 
    at com.sun.javafx.application.PlatformImpl$$Lambda$45/501263526.run(Unknown Source) 
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source) 
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) 
    at com.sun.glass.ui.win.WinApplication.lambda$null$141(Unknown Source) 
    at com.sun.glass.ui.win.WinApplication$$Lambda$37/96639997.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
Caused by: java.lang.NullPointerException: Location is required. 
    at javafx.fxml.FXMLLoader.loadImpl(Unknown Source) 
    at javafx.fxml.FXMLLoader.loadImpl(Unknown Source) 
    at javafx.fxml.FXMLLoader.loadImpl(Unknown Source) 
    at javafx.fxml.FXMLLoader.loadImpl(Unknown Source) 
    at javafx.fxml.FXMLLoader.loadImpl(Unknown Source) 
    at javafx.fxml.FXMLLoader.load(Unknown Source) 
    at ds.airbus.simulator.controller.MainWindowController.initOutputView(MainWindowController.java:214) 
    at ds.airbus.simulator.controller.MainWindowController.initialize(MainWindowController.java:204) 
    ... 23 more 
+0

當從JAR文件運行時,MainWindowController.java中的getClass()。getResource(「../ view/Output.fxml」)爲null。 – Nandeesh

+0

試試'getClass()。getResource(「/ com/example/app/view/Output.fxml」)' – ItachiUchiha

+0

@IchichiUchiha,你的建議工作.. :)非常感謝! – Nandeesh

回答

0

我試圖加載使用getClass().getResource(../view/Output.fxml")從罐子運行時被給予異常FXML文件。 改爲使用ClassLoader.getSystemResource("com/example/app/view/Output.fxml")getClass().getResource("/com/example/app/view/Output.fxml") 將解決該問題。

相關問題