2017-07-31 57 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

它有时会发生,但现在很高兴在这里,它的工作!伟大和欢呼! –