2

ファイルを含むMavenプロジェクトがありますsrc/main/resources/barcoding.properties。以下のコードで barcoding.properties ファイルを取得しようとすると、以下のコードで null ポインターを取得し続けます。

public class BarcodingProperties{
  private static Properties props = null;

  private static void getProperties() {
        System.out.println("we in getProperties");
        props = new Properties();
        InputStream in = BarcodingProperties.class.getClass().getClassLoader().getResourceAsStream("barcoding.properties"); <-- This line returns null pointer exception.
        System.out.println("in. = "+in.toString());
        try {
            props.load(in);
        } catch (IOException e) {
            System.out.println("unable to load properties");
            e.printStackTrace();
        }
    }
}

プロジェクトをビルドして jar ファイルを調べると、barcoding.properties がプロジェクトのルートに存在します。

これが null を返すのはなぜですか?どうすれば修正できますか?

4

2 に答える 2

2

これは奇妙に思えます:

BarcodingProperties.class.getClass()

BarcodingProperties.class は、BarcodingProperties クラス オブジェクト インスタンスです。その上で getClass() を実行すると、 Class クラス オブジェクトが返されます...

String.class を使用したIdeone フィドル

あなたが望むのはおそらく次のとおりです。

InputStream in = BarcodingProperties.class.getClassLoader().getResourceAsStream("barcoding.properties");
于 2013-09-25T20:21:16.993 に答える
2

Class次のようにではなく、リソースをロードするためにのクラスローダーを使用しようとしていますBarcodingProperties:

BarcodingProperties.class.getClassLoader().getResourceAsStream("barcoding.properties");

Classクラスローダが null であり、ブートストラップ クラス ローダによってロードされたことを示します。「Stock JDK クラスと "null" ClassLoader?」を参照してください。詳細については。

于 2013-09-25T20:21:21.107 に答える