2016-11-22 7 views
-1

私はかなり長い間Webを見てきましたが、答えは出ませんでした。getResourceAsStream null on stream

私の問題は、私のイメージのストリームを読み込むことができないということです。ヌル

追加情報
http://prntscr.com/da875i http://image.prntscr.com/image/640b7c72b3e64b56b88bb7152eeffa60.png

彼らはすべて返却:
私はEclipseのネオンを使用しています(最新の

System.out.println(Main.class.getResourceAsStream("AQUA_KINGDOM.png")); 
System.out.println(Main.class.getResourceAsStream("/img/AQUA_KINGDOM.png")); 
System.out.println(Main.class.getResourceAsStream("img/AQUA_KINGDOM.png")); 
System.out.println(Main.class.getResourceAsStream("conquest/img/AQUA_KINGDOM.png")); 
System.out.println(Main.class.getResourceAsStream("/conquest/img/AQUA_KINGDOM.png")); 
System.out.println(Main.class.getResourceAsStream("kingconquest/conquest/img/AQUA_KINGDOM.png")); 
System.out.println(Main.class.getResourceAsStream("/kingconquest/conquest/img/AQUA_KINGDOM.png")); 
System.out.println(Main.class.getResourceAsStream("/eu/kingconquest/conquest/img/AQUA_KINGDOM.png")); 

をそして、これは私のコンテンツツリーです:
マイコードをテストするよう安定した)

これはプラグインであることを忘れてしまった(「jarファイル「興味のある方

+1

どのようにEclipseのプロジェクトである "構成されたJavaのビルド・パス" は? 'src'のソース、' bin'の出力? '.../bin/eu/kingconquest/conquest/img'フォルダに' AQUA_KINGDOM.png'ファイルがありますか? – Andreas

+0

あなたが今述べたことをアクチュアリにチェックする方法がわからないのですが、プラグイン(jarファイル)として実行しています。実行可能なjarファイルではありません。 私はimgファイルのビルドパスの変更を行っていません。 – KingConquest

+0

jarファイルとして実行している場合、jarファイルのビルドには '.png'ファイルが含まれていません。 jarファイルを開いて確認します(これはzipファイルなので、zipツールで実行されます)。あなたのビルドプロセスに欠陥があります。 – Andreas

答えて

-2

のためのMinecraftのspigotAPI用) *プラグインのようにClassLoaderを使用してみてください:

Main.class.getClassLoader().getResourceAsStream("AQUA_KINGDOM.png"); 
+0

['Main.class.getResourceAsStream(" /xxx/foo.bar ")'](https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html#getResourceAsStream-java) .lang.String-)は、[Main.class.getClassLoader()。getResourceAsStream( "xxx/foo.bar") '](https://docs.oracle.com/javase/8/docs/api)と同じです。 /java/lang/ClassLoader.html#getResourceAsStream-java.lang.String-)、そして疑問符はそれをすべて試しました。なぜ、あなたは 'getClassLoader()'を追加すると*違いがあると思いますか? – Andreas

+0

'ClassLoader'を使用しない場合、絶対リソース名の構築は異なります。 [https://docs.oracle.com/javase/7/docs/api/java/lang/ClassLoader.html#getResourceAsStream(java.lang.String)] –

+0

[class.getResourceAsStream]のjavadocを読んでいらっしゃいましたか? (String name) '](https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html#getResourceAsStream-java.lang.String-)のように、最初のコメント? *このメソッドは、このオブジェクトのクラスローダーに委譲します。 [...]名前が '/'( '\ u002f')で始まる場合、リソースの絶対名は '/'に続く名前の部分です。*それでは、繰り返しましょう: 'getResourceAsStream("最初の*が2番目に委譲するため、getClassLoader()。getResourceAsStream( "xxx/foo.bar") 'と同じです。 – Andreas

関連する問題