关于jar包读取resource报错问题
程序员文章站
2022-05-04 14:41:04
...
问题
简单的获取项目中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();
上一篇: log4j和slf4j的整合
推荐阅读