java - 如何访问存储在 Docker 容器内的“src/main/resources/someFolder”中的应用程序资源文件?
问题描述
我正在开发一个基于 gradle 的服务,该服务应该在 kubernetes 集群的 docker 容器中运行。在本地,我可以访问资源,一些用于 CouchDb 初始化的 json 文件。在 Docker 中构建和部署服务后,将无法再访问这些文件,并且出现找不到文件异常并且无法启动服务。我可以看到我的文件夹在生成的 jar 中,但我无法访问这些文件。我使用它如下:
DesignDocument design = DesignDocumentManager.fromFile("design-documents/documents.json");
它来自IBM Cloudant Java Client API。我尝试了路径的不同版本,即使用前导斜杠或项目的绝对路径。
解决方案
API 没有 File 的替代品,后者是操作系统文件。所以使用临时文件。
InputStream in = getClass().getResourceAsStream(
"/design-documents/documents.json");
Path tempPath = Files.createTempFile("desdoc-", ".json");
Files.copy(in, tempPath);
DesignDocument design = DesignDocumentManager.fromFile(tempPath.toFile());
Files.delete(tempPath);
注意/
Class.getResource(AsStream) 的前导。
推荐阅读
- go - 切片接口上的 Golang Switch Case
- git - Git - 查看合并冲突解决的合并差异与后续提交?
- html - 使用 scrapy 跟踪 HTML 中的标签
- verilog - 我无法将输出分配给 Verilog 中的值
- c# - Microsoft Graph .NET SDK - 检索 ListItem 字段
- excel - 使用左函数作为循环的一部分 - VBA
- openwrt - 在 openwrt 上设置强制门户
- javascript - Redux-React 通过 mapDispatchToProps 方法传递对象
- http - Dart 中 http 和 HttpClient 的区别
- android - 使 Android 布局独立于系统区域设置?