关于jar包读取resource报错问题

问题

简单的获取项目中resource下的一些类似yml、xml、json的文件。在本地运行是正常的,但是打包成jar包在windows或linux上运行的时候却找不到导致报错。
项目目录结构:

在这里插入图片描述
本人以前所使用的方法:
刚开始是通过文件路径然后通过readFile(“文件路径”)的方式读取,本地是可以的,但是打包成jar包之后再服务器中打印出的路径是一串数字。

File file = new ClassPathResource("data/data.json").getFile();
String filename = file.getFilename();

错误分析

因为程序已经被打包成jar包,所以getPath()和getFile()在这里的返回值是一样的。都是/xxx/xxx.jar这种形式。如果路径包含Unicode字符,还需要将路径转码

path = java.net.URLDecoder.decode(path, "UTF-8");

正确方法

本人之后网上找到了简单方便的解决办法:

  @Autowired
  ResourceLoader resourceLoader;
  
  Resource resource=resourceLoader.getResource("classpath:preferences.json");
  String filename = resource.getFilename();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值