首页 > 解决方案 > 在 jar 中找不到资源文件,但在 winrar 中打开时存在

问题描述

我想在我的使用 gradle 的 java 应用程序中读取一个 json 文件。当我在 Intellij 中运行应用程序并 gradle 运行时,它运行良好,但是当我执行 gradle dist 并运行该 jar 时,它会抛出 FileNotFound。如果我用 winrar 打开 jar,我会在正确的目录中看到该文件。

我已经尝试以我能找到的所有方式获取文件,其中一些是:

new FileReader("data/user-data.json");
new FileReader(new File(getClass().getResource("data/user-data.json").getFile()));
new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("data/user-data.json")));

还有更多。

谁能帮我?如果您需要更多信息,请与我们联系。

标签: java

解决方案


您忘记在资源路径中添加“/”:

getResourceAsStream("/data/user-data.json")

你的罐子应该是这样的:

root (*.jar)
 |-- data
      |-- user-data.json

推荐阅读