【问题标题】:Can't locate resource file in JAR在 JAR 中找不到资源文件
【发布时间】:2019-08-28 06:03:37
【问题描述】:

我的 Java 应用程序中有一个类,它读取位于 src/main/resources 中的资源文件夹。因此,在该类中,我将资源文件夹指定为:

public static final String RES_LOCATION = "./src/main/resources";

程序运行良好。但是当我制作一个 jar 并将其用作另一个项目中的依赖项时,上面的类会失败,因为它找不到资源文件夹。

有什么办法吗?

【问题讨论】:

    标签: java jar meta-inf


    【解决方案1】:

    您需要从该目录中读取特定文件作为类路径资源,而不是 java.io.File

    getClass().getResourceAsStream("relative/class/path/to/resource");
    

    【讨论】:

    • 如果我想加载具有特定扩展名的文件,你有什么建议?
    • 使用相同的技术,但将完整的文件路径放在类路径中并与 cp 相关。所以将本例中的resource 替换为1.txt,例如
    【解决方案2】:

    你指定了错误的资源路径,你需要像resources一样加载资源 'public static final String RES_LOCATION = "resources"' as src/main 将不存在。

    【讨论】:

    • 问题是,我正在获取资源文件夹的名称 (src/main/resource) 并根据特定扩展名列出该文件夹中的所有文件。我怎样才能在 jar 中实现这一点?
    【解决方案3】:

    ./src/main/resources与你的项目结构有关,打包到.jar文件时不一样。这两种结构非常不同,它会影响您访问文件的方式。

    访问资源中文件的最佳实践可以在此页面上找到:https://www.mkyong.com/java/java-read-a-file-from-resources-folder/

    【讨论】:

      猜你喜欢
      • 2016-06-18
      • 2012-02-04
      • 1970-01-01
      • 2014-03-22
      • 1970-01-01
      • 2014-08-21
      • 2012-08-11
      • 1970-01-01
      • 2020-05-20
      相关资源
      最近更新 更多