欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

关于jar包读取resource报错问题

程序员文章站 2022-05-04 14:41:04
...

问题

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

关于jar包读取resource报错问题
本人以前所使用的方法:
刚开始是通过文件路径然后通过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();
相关标签: 问题解决 java