簡體   English   中英

無法從 jar 讀取資源

[英]Cannot read resource from jar

我有以下前綴:

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

並且有方法

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

在 intellij idea 中可以正常工作,但是在啟動 jar 時會發生錯誤:

java.nio.file.NoSuchFileException: file:/app.jar./BOOT-INF/classes!/templates/request-orders/unmarked/RequestOrderUnmarked.pdf

您不能假定資源是文件。 當資源在.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();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM