2

基本的に、コードには次の2行があります。

InputStream is = this.getClass().getClassLoader().getResourceAsStream("resources/config");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(is));

Eclipseでの私のファイル構造は次のとおりです(画像が投稿されています):

ここに画像の説明を入力

このコードを実行しようとすると、2 行目 (BufferedReader 行) に達した時点で NullPointerExceptions が発生します。私は一生、なぜ InputStream が "is" が null になるのか理解できません。何か案は?

4

3 に答える 3

4

クラスローダを使用してストリームをロードする場合、使用するパスは常に絶対パスであり (したがって、この場合は先頭を使用しない/でください)、ルート パッケージから開始する必要があります。あなたの場合、これは下にありsrcます。

したがって、リソースはパッケージの下にあるため、次のqbooksprintfix/resourcesようにアクセスする必要があります。

getResourceAsStream("qbooksprintfix/resources/config")

于 2013-08-19T20:05:29.460 に答える
0

そうあるべき

getResourceAsStream("qbooksprintfix/resources/config");

またはできれば

Thread.currentThread().getContextClassLoader().getResourceAsStream("qbooksprintfix/resources/config");
于 2013-08-19T20:02:17.340 に答える
0

getResourceAsStream()アイテムのクラスパスを検索するため、この場合の「ベース」ディレクトリはおそらくsrc次のとおりです。

InputStream is = this.getClass().getClassLoader().getResourceAsStream("qbooksprintfix/resources/config");
于 2013-08-19T19:59:40.293 に答える