3

何日も悩まされている問題があります... 同様の質問をチェックしましたが、解決策が見つかりませんでした。

NetBeans IDE を使用しています。プロジェクトjarファイル、つまり「Clock.jar」を構築します。これには、いくつかの画像、テキストファイル、およびすべてのプロジェクトクラスが含まれる「時計」という名前のフォルダーが含まれています。画像アイコンを作成するための次のコードは機能します

return new ImageIcon(getClass().getResource("/clock/button_close.png"));

ただし、テキスト ファイルを読み取るための次のコードは失敗します。

InputStream name = getClass().getResourceAsStream("/clock/input.txt");
BufferedReader reader = new BufferedReader(new InputStreamReader(name));

ご想像のとおり、NullPointer Exception がスローされ、ファイルが見つからない可能性があります。

しかし、(getResource から返された URL を渡すことによって) 画像アイコンは正常に作成されますが、(getResourceAsStream からの入力ストリームを渡すことによって) txt ファイルが見つからないのはなぜですか。

あらかじめご回答いただきありがとうございます(つまり :) )

jar -tvf Clock.jar
0 Wed May 15 14:44:36 EEST 2013 META-INF/
202 Wed May 15 14:44:34 EEST 2013 META-INF/MANIFEST.MF
0 Wed May 15 14:44:36 EEST 2013 clock/
649 Wed May 15 14:44:36 EEST 2013 clock/Clock$1$1.class
789 Wed May 15 14:44:36 EEST 2013 clock/Clock$1.class
2026 Wed May 15 14:44:36 EEST 2013 clock/Clock.class
709 Wed May 15 14:44:36 EEST 2013 clock/ClockDialog$1.class
830 Wed May 15 14:44:36 EEST 2013 clock/ClockDialog$2.class
750 Wed May 15 14:44:36 EEST 2013 clock/ClockDialog$3.class
713 Wed May 15 14:44:36 EEST 2013 clock/ClockDialog$4.class
741 Wed May 15 14:44:36 EEST 2013 clock/ClockDialog$5.class
708 Wed May 15 14:44:36 EEST 2013 clock/ClockDialog$6.class
1081 Wed May 15 14:44:36 EEST 2013 clock/ClockDialog$7.class
981 Wed May 15 14:44:36 EEST 2013 clock/ClockDialog$8.class
9640 Wed May 15 14:44:36 EEST 2013 clock/ClockDialog.class
702 Wed May 15 14:44:36 EEST 2013 clock/ClockFrame$1.class
708 Wed May 15 14:44:36 EEST 2013 clock/ClockFrame$2.class
734 Wed May 15 14:44:36 EEST 2013 clock/ClockFrame$3.class
743 Wed May 15 14:44:36 EEST 2013 clock/ClockFrame$4.class
531 Wed May 15 14:44:36 EEST 2013 clock/ClockFrame$5.class
1046 Wed May 15 14:44:36 EEST 2013 clock/ClockFrame$6.class
9464 Wed May 15 14:44:36 EEST 2013 clock/ClockFrame.class
782 Wed May 15 14:44:36 EEST 2013 clock/ErrorReporter.class
1826 Wed May 15 14:44:36 EEST 2013 clock/IconButton.class
2693 Wed May 15 14:44:36 EEST 2013 clock/MessagePool.class
2824 Wed May 15 14:44:36 EEST 2013 clock/SystemInfo.class
2212 Wed May 15 14:44:36 EEST 2013 clock/button_close.png
6540 Wed May 15 14:44:36 EEST 2013 clock/button_close_highlighted.png
5668 Wed May 15 14:44:36 EEST 2013 clock/input.txt
4

1 に答える 1

5

ソースをもう一度よく見て、試してみてください..

URL url = getClass().getResource("/clock/input.txt"); 
InputStream name = url.openStream(); 

Class::getResourceAsStreamバリアントは、単純なパスとは少し異なる方法でパスを処理することを思い出しますClass::getResource-後者のパスでも機能するはずです。

于 2013-05-15T12:08:32.217 に答える