プロパティ ファイルで名前が指定されているクラスをロードしようとしています。これが同じコードです。
try {
Properties properties = new Properties();
InputStream in = MyAbstractFactory.class.getResourceAsStream("/some.properties");
properties.load(in);
String impl = properties.getProperty("key");
MyAbstractFactory factories = (MyAbstractFactory) Class.forName( impl ).newInstance();
return factories;
} catch (Exception e) {
return new DefaultFactoriesImpl();
}
このコードは jar ファイルの一部です。プロパティ ファイルは jar のすぐ外側にあります。プロパティ ファイルをロードできず、代わりに DefaultFactoriesImpl をロードしています。MyAbstractFactory.class.getResourceAsStream がクラスパスでリソースを見つけられない場合にこれが発生することはわかっていますが、ここではそうではないようです。
ディレクトリ構造:-
- コム
- myjar.jar
- 一部のプロパティ
私が実行しているコマンドは「java -jar myjar.jar」です
なぜこれが起こっているのかについてのフィードバック。これはクラスローダーと関係がありますか? Eclipse内からこのコードを実行すると、some.propertiesを問題なく取得しているように見えることを追加したいと思います。