jar ファイルの外部にある構成ファイルを読み取ることができる jar を作成しようとしています。できれば、jar ファイルが置かれているディレクトリから。私のディレクトリ構造は次のとおりです。
/src/main/resources/config
mvn install を実行してjarファイルを作成するmavenプロジェクトがあります。
<plugin>
<!-- Build an executable JAR -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.expedia.e3.qm.perforce.audit.Main</mainClass>
</manifest>
<manifestEntries>
<Class-Path>config/config.xml</Class-Path>
</manifestEntries>
</archive>
<excludes>
<exclude>**/config/</exclude>
</excludes>
</configuration>
</plugin>
現在、構成フォルダーを /target/classes/config から /target/config に手動で移動しています。Maven アセンブリ プラグインを調査しましたが、さまざまな構成をすべて試しましたが、/ のみに出力することができませんでした。 target/config は常に /target/audit-1.0/config を出力します。ここで、audit-1.0 は私の Maven プロジェクト名です。
Intellij IDEA を使用してプログラムをデバッグし、maven プロジェクトをビルド/インストールしています。
コードでは、ファイルにアクセスしようとしています
InputStream stream = Class.class.getResourceAsStream("/config/config.xml");
IDEで実行すると機能しますが、コマンドラインから実行すると次のようになります。
java -jar ./audit-1.0.jar
「inputStream」にアクセスしようとすると、エラーがスローされます。
Exception in thread "main" java.lang.NullPointerException
「/config/config.xml」が「/target/audit-1.0.jar!/config/config.xml」を指す必要があることを理解しています。ただし、「/target/config/config.xml」を指すようにしたい
何か案は?これは可能ですか?