2017-02-25 11 views
0

I`m:画像をロードすることはできません - コードで画像をロードしようと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で出力フォルダを確認するには、メニューから「Project」を選択し、次に「Properties」を選択し、「Java Build Path」を選択して「Source」タブを選択し、「Default output folder」として指定されているものを確認します。

getResourceAsStreamに指定するパスの先頭が/の場合、そのパスはクラスパスを基準として解釈されます。したがって

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

が有効です。

-2

あなたが最初の1つのディレクトリアップを行かなければならないように見えるん:

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

問題が解決しない場合はどちらも、二つのソースフォルダ(srcは)本当に同じである場合や、彼らは別の親を持っているかどうかを確認フォルダ

+0

これはうまくいきません。私はまた、フォルダの場所を確認しました。 –

+2

リソースパスに '..'を絶対に使用しないでください。これは有効なリソース名ではありません。 (パスが正しければリソースがファイルシステム上にあるが、アプリケーションをjarファイルにバンドルすると失敗する) –

関連する問題