当前位置: 首页 > 知识库问答 >
问题:

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

贺君浩
2023-03-14

在将Spring Boot版本1.5.7.RELEASE导出到可运行的JAR后,出现了以下错误。出于安全原因,我不使用maven,并且我在构建路径中添加了所有JAR。

我服从命令

java -jar mailer.jar

然后我收到了屏幕截图中显示的错误

共有3个答案

墨雨华
2023-03-14

试试这个

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

OR

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

不要使用文件阅读器或文件

使用输入流读取器,输入流等

赵刚豪
2023-03-14

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

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

上官凯歌
2023-03-14

因为当您的资源不存在于打包的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();
}
 类似资料:
  • 我的代码: 我已经试过了,而不是。getFile(),extractJarFileFromURL或资源。getInputStream(),但所有这些都不起作用。当我打包项目并将其作为jar文件运行时,它试图打开以下文件,它总是返回以下消息。 错误: java.io.FileNotFoundException:类路径资源[资产/OPTIONS_DE. docx]无法解析为绝对文件路径,因为它不驻留在

  • Spring Boot文件读取错误无法解析为绝对文件路径,因为它不位于文件系统:jar:file: 要求1.Spring Boot项目jar文件2.文件读取3.文件上传

  • 我想在当前目录和所有子目录中递归编译protobuf文件。我正在运行以下脚本: 但我收到的只有以下错误: d:\Code\cloud dapi\third_party\googleapis\google\type\dayofweek.proto:文件不存在于使用proto_path(或-I)指定的任何路径中。您必须指定包含此文件的proto_path。请注意,proto_path必须是. prot

  • 我正在测试导入。另一个目录中的proto文件。 $GOPATH/src/A/A.proto $GOPATH/src/B/B.proto 我正在这样做:在文件夹A中: 然后在文件夹B中: 但我会得到以下错误: B. proto:文件不驻留在使用--proto_path(或-我)指定的任何路径中。您必须指定一个--proto_path包含此文件。请注意,proto_path必须是. proto文件名的

  • 问题内容: 有一个maven项目A。执行mvn全新安装后,将构建项目,并且该jar在我的本地存储库中可用,即 A.jar包含几个类和这些类使用的xml文件 从另一个Maven项目中,我正在调用使用一个XML文件的类中的一种方法。 代码是: 第二个项目位于我的D盘中。在获得绝对路径时,我得到的是\ com \ stackoverflow \ A \ res \ p.xml,这是正确的绝对路径。 但是

  • 我不明白Liquibase到底有什么问题,因为路径指定正确 应用yml文件: 编辑1项目结构 使用编译的类编辑2个文件夹