为了账号安全,请及时绑定邮箱和手机立即绑定

Spring Boot uber JAR:无法解析为绝对文件路径,因为它不驻留在文件系统中

Spring Boot uber JAR:无法解析为绝对文件路径,因为它不驻留在文件系统中

白衣非少年 2022-01-06 17:47:24
将 Spring Boot 版本 1.5.7.RELEASE 导出到可运行的 JAR 后,出现以下错误。由于安全原因,我不使用 maven,并且在构建路径中添加了所有 JAR。我在命令下运行java -jar mailer.jar然后我收到了你在屏幕截图中看到的错误
查看完整描述

3 回答

?
catspeake

TA贡献1111条经验 获得超0个赞

因为当打包的 uber-jar 中不存在您的资源时,类路径有问题。使用这样的解决方案


String fuu = "";

ClassPathResource classPathResource = new ClassPathResource("static/foo.txt");

try {

    byte[] binaryData = FileCopyUtils.copyToByteArray(classPathResource.getInputStream());

    fuu = new String(binaryData, StandardCharsets.UTF_8);

} catch (IOException e) {

    e.printStackTrace();

}


查看完整回答
反对 回复 2022-01-06
?
烙印99

TA贡献1829条经验 获得超13个赞

试试这个


IOUtils.toString(new InputStreamReader(this.getClassLoader().getResourceAsStream("fileName.json")))


OR


new InputStreamReader(new ClassPathResource("fileName.json", this.getClassLoader()).getInputStream())

不要使用FileReader或File


使用InputStreamReader , InputStream等


查看完整回答
反对 回复 2022-01-06
?
呼唤远方

TA贡献1856条经验 获得超11个赞

似乎应用程序正在尝试通过 AbstractFileResolvingResource.getFile()(堆栈跟踪中的几行)访问文件,这在可运行的 Spring Boot jar 中是不可能的(从 IDE 运行时它可能工作)。

尝试使用 getInputStream() 代替,例如参见这篇文章


查看完整回答
反对 回复 2022-01-06
  • 3 回答
  • 0 关注
  • 434 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号