3
我正在嘗試創建jar,在那裏我可以讀取jar文件以外的配置文件。最好從jar文件所在的目錄。我的目錄結構如下:在jar外部讀取配置文件
/src/main/resources/config
我有我運行mvn安裝上創建一個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>
現在我手動從/目標移動我的config文件夾/班/ config來/目標/ config中我已經研究了Maven的組裝插件,但是我已經試過這一切的不同的配置和我無法得到它只輸出到/目標/配置它總是會輸出/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」應該是po int到「/target/audit-1.0.jar!/config/config.xml」。不過,我希望它指向「/target/config/config.xml」
任何想法?這甚至有可能嗎?
*「我正在嘗試創建jar文件,我可以讀取jar文件以外的配置文件。」*爲什麼不將它包含在Jar中? –
我希望能夠在釋放jar而不必重新編譯它之後編輯程序的配置。 –
*「無需重新編譯它。」*請注意,創建新的jar與重新編譯那裏的代碼不同。 OTOH我通常會把配置等資源。在一個單獨的Jar中,[Java Web Start](http://stackoverflow.com/tags/java-web-start/info)可以更新該部分。 –