【问题标题】:Resource file not found in jar but present when opening in winrar [duplicate]在 jar 中找不到资源文件,但在 winrar 中打开时存在 [重复]
【发布时间】:2019-03-18 12:59:36
【问题描述】:

我想在我的使用 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


    【解决方案1】:

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

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

    你的 jar 应该如下所示:

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

    【讨论】:

    • 这适用于我的 jar,但不适用于 Intellij 或 gradle run
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-18
    • 2014-01-28
    • 2017-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多