私のプロジェクト(MyProject.jar)内にjar(PropLoader.jar)としてパッケージ化されたProperty Loaderユーティリティを使用しています。プロパティファイルはMyProject.jar内の別のパッケージにあります。 com.my.project.resources.MyPropertyFile.properties及びIは、(メインクラス:PropLoader)UTIL PropLoaderを呼び出していたように入力にpropfile名前を期待:ローダーutilが異なるjarである場合にJarにプロパティファイルをロードする方法
PropLoader.loadProperties("/com/my/project/resources/MyPropertyFile.properties")
上記のコードが入っているクラスファイル: com.my.project.resources.MyLogic
内部的にユーティリティjarはgetResourcesAsStreamを使用します。
しかし、これは、nullポインタ例外が発生します。
SEVERE: java.lang.NullPointerException
at java.util.Properties$LineReader.readLine(Properties.java:418)
at java.util.Properties.load0(Properties.java:337)
at java.util.Properties.load(Properties.java:325)
はいです。 com.my.project.resources.MyLogicクラスにコードを配置すると、プロパティファイルを読み込むことができます。しかし、プロパティファイル名をPropLoader.loadProperties()に送ると、ファイルを見つけることができなくなります。 – Shilp
'PropLoader'は自分が所有するクラスとは異なるクラスローダーによって読み込まれる可能性があります。その場合、リソースはPropLoaderのクラスローダーのコンテキストに基づいて検索されます。 PropLoaderに、あなたが使用できる(たとえば、あなたのクラスから開いたリソースストリームを渡す)別のメソッドがありますか? [件名]の詳細(http://www.javaworld.com/javaworld/javaqa/2003-06/01-qa-0606-load.html) – Attila
あなたは正しいです。 PropLoaderは内部的にthis.getClass()。getResourceAsStream(propertyFileName)を使用します。これは従来のjarファイルなので、この実装を変更することはできません。これを回避する方法はありますか? – Shilp