spring-boot以jar包方式时读取resource或是template文件

本文介绍了在SpringBoot应用以jar包形式部署时,如何正确读取resource或template文件的问题。在jar包环境下,常规的文件读取方式会报错。文章列举了四种解决方案,包括使用类加载器读取文件流的方法,这些方法在开发和预发布环境中都能成功读取。同时,提到了理解Class.getResource和ClassLoader.getResource的区别对于解决问题至关重要。
摘要由CSDN通过智能技术生成

现象

以jar包方式部署系统,想读取resource或是template下面的文件时,报 File Not Found

我遇到的情况是,整个项目达成了一个包,在开发环境(windows + idea)读取文件没问题,但在预发布环境(centos, 打成一个jar部署),则报错。
使用

jar -xvf xxx.jar

命令解压jar后,大体结构如下:

BOOT-INF
META-INF
org
...

继续往下找可以找到我想要读取的资源文件,说明打包正常,那只能说明:
以jar形式部署后,采用一般的java 读取文件的API接口,可能无法从jar包直接读取到文件。

解决

定位到是读取文件方式问题后,试验了几种,以下都列下:

方法1

ClassPathResource classPathResource = new ClassPathResource("excelTemplate/test.xlsx");
InputStream inputStream =classPathResource.getInputStream();

方法2

InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("excelT
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值