2017-02-25 56 views
0

我真的試圖加載圖像的代碼:圖片不能加載 - JavaFX的

Image image = new Image(AddOrderController.class.getResourceAsStream("/resources/icons/ok_icon.png")); 

我收到異常:

java.lang.NullPointerException: Input stream must not be null 

我的項目的樹很簡單:

tree of project

當我加入ok_icon.png包裝控制器一切正常,並圖標的作品,但在resources/icons無法加載圖標。任何人都可以幫助我如何重製代碼?

回答

1

由於您有src/test/resources作爲源文件夾,因此resources的內容將作爲應用程序的一部分部署到類路徑的根目錄。這意味着,icons是在類路徑的根。

您可以通過使用系統文件瀏覽器(Mac上的Finder或Windows資源管理器,或近期調用的任何內容)檢查輸出文件夾的內容(我猜測它是target/classes)來驗證此內容。您可以通過選擇「項目」,從菜單,然後單擊「屬性」驗證Eclipse中的輸出文件夾,選擇「Java構建路徑」,選擇「源」選項卡,看到被指定爲「默認輸出文件夾」。

如果您提供給getResourceAsStream的路徑以前導/開頭,則路徑將相對於類路徑進行解釋。所以

Image image = new Image(AddOrderController.class.getResourceAsStream("/icons/ok_icon.png")); 

應該工作。

-2

看起來像你必須去一級目錄第一:

Image image = new Image(AddOrderController.class.getResourceAsStream("../resources/icons/ok_icon.png")); 

如果不工作都不是,檢查這兩個源文件夾(SRC)實際上是一樣的,或者如果他們有不同的父文件夾

+0

它不'噸的工作。我也檢查了文件夾的位置。 –

+2

切勿在資源路徑中使用'..'。這不是有效的資源名稱。 (它會工作,如果路徑是正確的,當你的資源是在文件系統上,但是當你在捆綁一個jar文件的應用程序將失敗。) –