失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 运行jar文件时 ClassPathResource无法读取到资源文件的问题

运行jar文件时 ClassPathResource无法读取到资源文件的问题

时间:2018-09-09 06:34:48

相关推荐

运行jar文件时 ClassPathResource无法读取到资源文件的问题

问题场景:

在idea中运行,一切正常,资源文件都可以访问到,但打成jar包后,使用java -jar的形式去启动,就访问不到resource下的资源文件了

网上搜了很多文章,但试了后都不好使

我的路径是配置在properties文件中,然后读取配置文件中的值,然后拼接文件路径,再使用ClassPathResource去读取的

开始时我配置文件中是这样写的:

#路径中注意首尾不要有空格service.config-root=static/service/service.config-name=AppConfig.json

程序代码读出后拼接:

@Value("${service.config-root}")private String configRoot;@Value("${service.config-name}")private String configName;.....省略无关code.....public String getPath(){String configPath = this.configRoot + this.configName;return configPath;}

但运行jar后,直接FileNotFoundException了

解决:

方案1:

主要是斜杠"\"和反斜杠"/"的问题,配置文件修改如下:

#路径中注意首尾不要有空格service.config-root=static\\tileservice\\service.config-name=AppConfig.json

方案2:

使用"File.spearator"拼接路径

service.config-root=staticservice.config-name=AppConfig.json

@Value("${service.config-root}")private String configRoot;@Value("${service.config-name}")private String configName;.....省略无关code.....public static <T> T readJsonFromClassPath(Type type) throws IOException {//这里使用File.spearator拼接ClassPathResource resource = new ClassPathResource(this.configRoot + File.spearator + this.configName);if (resource.exists()) {return JSON.parseObject(resource.getInputStream(), StandardCharsets.UTF_8, type, .....}}

搞定!

如果觉得《运行jar文件时 ClassPathResource无法读取到资源文件的问题》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。