2017-07-31 58 views
0

我正在寫一個Spring Boot web應用程序。如何從jar中訪問ClassPath的資源?

在我的應用程序中,我需要能夠下載打包到可執行應用程序.jar中的zip文件。

我使用使用ClassPathResource加載該文件的流:

Resource applier=new ClassPathResource("applier/com.itnsa.patch.applier-1.0.25-SNAPSHOT-package.zip"); 
if (applier.exists()) {//do stuff} 

的zip文件位於/ src目錄/主/資源/施放。

在我的應用程序的一些其他類中,我已經使用此方法從/ src/main/resources/exception檢索一些.txt文件,並且所有工作都正常。當我嘗試訪問zip時,exists方法返回false。

我在訪問zip壓縮文件時做錯了什麼?我怎樣才能做到這一點?

+0

'使用ClassPathResource(「/施放」)的情況下'應該足夠了。不需要顯示應該使用的jar文件。應用程序運行時,該jar應該添加到教程中。 – StanislavL

+0

問題是我無法訪問位於applier/myZip.zip上的zip文件exists()方法產生錯誤 – dannemp

+0

您嘗試從'/'開始路徑嗎? – StanislavL

回答

1
Resource applier=new ClassPathResource("applier/com.itnsa.patch.applier-1.0.25-SNAPSHOT-package.zip"); 
if (applier.exists()) {//do stuff} 

它應該工作,我試着相同的文件名和相同的文件夾結構,它返回true,確保jar文件是在類路徑。 如果您正在使用/使用任何IDE,請確保jar文件位於classpath中。 還有你可以利用下面給出的另一種方式,但是這是不適合你

InputStream in = getClass().getResourceAsStream("/fileName.zip"); 
BufferedReader reader = new BufferedReader(new InputStreamReader(in)); 
+0

我真的不明白爲什麼它以前沒有工作,但現在它的工作原理,我所做的只是一個'乾淨的安裝'在maven – dannemp

+0

它有時會發生,但現在很高興在這裏,它的工作!偉大和歡呼! –