次のフォルダ構造を想像してください
- フォルダ
- App.jar
- img(実は存在すら知らなかった)
App.jar 内にはimg
フォルダーもあります。
したがって、次のコードを使用して画像 img を読み取りました
InputStream is = IconManager.class.getClassLoader().getResourceAsStream("img/1.png");
BufferedImage bimage = ImageIO.read(is);
is.close();
このスニペットがjar自体からファイルを読み取るのに完全に機能することは以前から知っていました。しかし、偶然にも古いバージョンの img が内部にあったため、jar 自体ではなく、外部のフォルダー/imgfolder
から画像ファイルを読み取り始めました。img
そして、私はそれを理解するために多くの時間を費やしました。
私の質問は、デフォルトでスニペットが App.jar ではなく folder/img から読み取ろうとするのはなぜですか?
UPD: java -jar App.jar
fromを使用して実行しますfolder
私はWindows 7を使用classpath
しており、jarを構築する前にEclipseで指定したことはありません