SpringBoot打成Jar包获取resource下文件的问题
在工作中遇到的问题,在idea中读取resource下的template文件夹下的模板文件时正常,但是打成Jar包之后在调用的时间读取报错File Not found exception
下面是resource的目录结构,框选的是要读取的文件
在本地IDEA中读取正常,打成Jar包后就无法访问的
一开始的写法是下面这种: ResourceUtils是 org.springframework.util.ResourceUtils包
String path = "classpath:template/双公示模板新.xlsx";
File file = ResourceUtils.getFile(path);
FileInputStream fileInputStream = new FileInputStream(file);
这种方式在本地测试是没有问题的,但是打成jar包之后不行。开始以为是资源文件过滤的问题,就在pom文件里加了以下配置
当然,这段配置是必须加的
<build>
<finalName>${artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.0.7.RELEASE</version>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.yml</include>
<include>**/Dockerfile</include>
<include>**/*.xlsx</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
加完配置之后还是不行。
ClassPathResource类获取流
使用以下这种方式才是可以的:
这种方式才能在打成jar包之后读取到文件,具体的原因我这边不清楚,所以麻烦知道的在评论区留言,非常感谢
ClassPathResource classPathResource = new ClassPathResource(path);
InputStream pathResourceInputStream = classPathResource.getInputStream();
|