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

无法从jar读取资源

席银龙
2023-03-14

我有以下前缀:

String prefix = TemplatesReader.class.getClassLoader().getResource("templates/").getPath();

有办法

public byte[] read(String pathToTemplate) {
   return Files.readAllBytes(Paths.get(prefix + pathToTemplate));
}

在intellij中,idea工作正常,但启动jar时出现错误:

JAVA尼奥。文件NoSuchFileException:文件:/app。罐子/BOOT-INF/classes/模板/请求订单/未标记/请求订单未标记。pdf

共有1个答案

葛越泽
2023-03-14

您不能假定资源是一个文件。当资源位于内部时。jar文件,它是其中的一部分。jar文件;它不再是一个单独的文件。

不能使用文件或路径读取资源。

不能使用URL的getPath()方法。它不返回文件名。它只返回URL的路径部分(即URL的方案/权限与其查询部分之间的所有内容),而不是文件路径。

相反,使用getResourceAsStream读取资源:

private static final String RESOURCE_PREFIX = "/templates/";

public byte[] read(String pathToTemplate)
throws IOException {
    try (InputStream stream = TemplatesReader.class.getResource(
        RESOURCE_PREFIX + pathToTemplate)) {

        return stream.readAllBytes();
    }
}
 类似资料:
  • 我很难弄清楚这个问题,我几乎什么都试过了。 我希望我的程序从Jar文件中读取两个资源,并且它将在eclipse中运行良好。但是当我从命令提示符运行jar时,它会给出空指针异常。 结构: src/main/java/App。JAVA src/main/resources/properties/application。属性 src/main/resources/spring/applicationCo

  • 我想从我的jar中读取一个资源,如下所示: 在Eclipse中运行它时工作良好,但如果我将它导出到一个jar中,然后运行它,就会出现一个IllegalArgumentException: 我真的不知道为什么,但通过一些测试我发现如果我改变 至 然后它的工作方式相反(它在jar中工作,但不能在eclipse中工作)。 我使用的是Eclipse,我的文件所在的文件夹位于类文件夹中。

  • Hi在运行我的java类时得到以下错误:创建会话工厂失败,出现异常org.hibernate.mappingException:无法从资源中读取映射:software.hbm.xml org.hibernate.cfg.configuration.addResource(configuration.java:485),在org.hibernate.cfg.cfiguration.parsemapp

  • 问题内容: 我想像这样从我的jar中读取资源: //Read the file 并且在Eclipse中运行它时效果很好,但是如果我将其导出到jar中运行,则会出现: 我真的不知道为什么,但是经过一些测试,我发现我是否改变了 至 然后它的作用相反(它在jar中起作用,但在Eclipse中不起作用)。 我正在使用Eclipse,并且包含我的文件的文件夹位于类文件夹中。 问题答案: 而不是尝试将资源作为

  • 我有这种情况。我正在用Spring Boot开发一个REST服务,我有一个dependency jar,这是另一个Spring Boot项目,我使用以下方法将其作为一个依赖项包括在内: https://docs.spring.io/spring-boot/docs/2.1.4.release/maven-plugin/examples/repackage-classifier.html 一切都编译

  • 问题内容: 我正在尝试从作为桌面应用程序运行的单独jar中访问jar文件中的XML文件。我可以获取所需文件的URL,但是当我将其传递给FileReader(作为字符串)时,我得到了FileNotFoundException,上面写着“文件名,目录名或卷标语法不正确”。 作为参考,我毫不费力地从同一个jar中读取图像资源,并将URL传递给ImageIcon构造函数。这似乎表明我用来获取URL的方法是