次のプロジェクト構造のようなものがあります
-project
-src/main/java // source folder
-com.mypackage
-Utility.java
-some.properties
-src/main/resources // source folder
-configuration_files
-configuration_report.txt
私はjar
EclipseのExport
関数で生成しています。上記はjar
、次の構造の に変換されます。
-myjar.jar
-com
-mypackage
-Utility.class
-some.properties
-configuration_files
-configuration_report.txt
クラス内で、 fromUtility
を取得しようとしています。InputStream
configuration_report.txt
私はこれを行っていました(static
メソッド内にあります):
Utility.class.getResourceAsStream("/configuration_files/configuration_report.txt");
ファイルはそれを要求するクラスと同じパッケージにないため、これはこの質問への回答によって検証されるようです。
ただし、実行すると、が返されますnull
。なんで?
some.properties
ファイルについては、両方を実行できることに注意してください
Utility.class.getResourceAsStream("/com/package/some.properties");
Utility.class.getResourceAsStream("some.properties");
そして私はストリームを取得します。
違いがある場合は、コマンドラインからこれを実行しています。
java [-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=1044] -cp myjar.jar MyMain
Eclipse内で実行しようとすると、動作します...
編集:
このコードは関連しています。前の の有無にかかわらず、/
null を返します
String sourceFilePath = "/configuration_files" + File.separator + "configuration_report.txt";
InputStream in = Utility.class.getResourceAsStream(sourceFilePath);