2013-05-11 161 views
0

我看了幾個文件有:Maven的:可執行的JAR文件未找到資源

new File(Thread.currentThread().getContextClassLoader().getResource("Configuration.txt")).getFile()); 

的正常工作爲構建項目和MVN測試,但只要我試圖執行的jar文件,這些電話爲空。這些文件實際存在於jar中。 這裏有什麼可能是錯的?

我POM-部分用於構建罐子(我沒有relevevant依賴現在):

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-jar-plugin</artifactId> 
    <version>2.4</version> 
    <configuration> 
    <archive> 
     <manifest> 
     <addClasspath>true</addClasspath> 
     <mainClass>path.to.mainclass</mainClass> 
     </manifest> 
    </archive> 
    </configuration> 
</plugin> 

資源文件是在標準文件夾的src/main /資源

+0

是Jar根目錄下的文件,還是與類相同的包? – rubixibuc 2013-05-11 09:21:40

+0

資源文件位於標準文件夾src/main/resources中 – user2368505 2013-05-11 09:42:43

回答

0

當您使用mvn test或從IDE運行測試從文件系統訪問物理文件,但是當您使用帶有打包資源的運行jar時,不能使用File類或getFile()方法。您應該使用getClass().getResource()致電或getClass().getResourceAsStream()

+0

好吧,那我該如何列出資源目錄中的文件,以及如何寫入通過getResourceAsStream()讀取的文件? – user2368505 2013-05-11 11:25:46

+0

你不應該在你的類路徑中將文件寫入jar文件(儘管在某些情況下你可以做到這一點)。您不應該嘗試從類路徑中的jar文件中列出條目。這些是Java平臺的規則。請記住,jar文件不是存儲代碼和資源的唯一方法。 – 2013-05-11 13:33:42

+0

謝謝,什麼是可重新命名而不是.jar文件?想到使用izPack,這是一個好主意嗎? – user2368505 2013-05-11 15:39:03

相關問題