Java 如何访问存储在';src/main/resources/someFolder';在Docker容器中?
我正在开发一个基于gradle的服务,它应该在kubernetes集群中的docker容器中运行。在本地,我可以访问资源,一些用于CouchDb初始化的json文件。一旦我在Docker中构建和部署了服务,这些文件就不再可访问,并且我得到了“未找到文件”异常,无法启动服务。我可以看到我的文件夹在生成的jar中,但我无法访问这些文件。 我使用它的方式如下:Java 如何访问存储在';src/main/resources/someFolder';在Docker容器中?,java,json,docker,gradle,cloudant,Java,Json,Docker,Gradle,Cloudant,我正在开发一个基于gradle的服务,它应该在kubernetes集群中的docker容器中运行。在本地,我可以访问资源,一些用于CouchDb初始化的json文件。一旦我在Docker中构建和部署了服务,这些文件就不再可访问,并且我得到了“未找到文件”异常,无法启动服务。我可以看到我的文件夹在生成的jar中,但我无法访问这些文件。 我使用它的方式如下: DesignDocument design=DesignDocumentManager.fromFile(“design documents/
DesignDocument design=DesignDocumentManager.fromFile(“design documents/documents.json”)代码>
它来自于。我尝试了路径的不同版本,即使用前导斜杠或项目的绝对路径。API没有文件的替代品,该文件是操作系统文件。
所以使用一个临时文件
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)的前面的/
。请分享您迄今为止所做的尝试,这对我很有用,但我们决定使用另一个选项,即使用Dockerfile中的copy将资源文件复制到容器中。