java - 在 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")));
还有更多。
谁能帮我?如果您需要更多信息,请与我们联系。
解决方案
您忘记在资源路径中添加“/”:
getResourceAsStream("/data/user-data.json")
你的罐子应该是这样的:
root (*.jar)
|-- data
|-- user-data.json
推荐阅读
- drools - DMN 1.2:从另一个 ItemDefinition 引用 ItemDefinition 会导致错误
- css - 使用显示网格时避免使父级高度小于子级
- ruby-on-rails - 尝试在 Ruby/Rails 中使用 SFTP.download 理解和下载文件
- go - 类型定义和接口转换
- react-native - 修复 react-native init 上的“找不到模块‘libnpx’”
- azure - QnA Maker 中缺少端点密钥
- spring-boot - 更新到 jdk 11 后,wildfly 17 中的 Springboot 部署失败
- javascript - 在颜色处设置未定义的属性“背景颜色”
- list - 在 Flutter 中按类型排序列表和排序
- python - 从循环列表中自动创建单个变量