【发布时间】:2021-01-27 21:22:52
【问题描述】:
上下文:我在 Windows PC 上本地调试/运行时成功解析了一个 json 文件
import com.fasterxml.jackson.core.JsonFactory
import com.fasterxml.jackson.core.JsonParser
import java.io.File
import java.nio.file.Paths
...
val basePath = Paths.get("").toAbsolutePath().toString()
val parser: JsonParser = JsonFactory().createParser(File("$basePath/app/src/main/resources/support/certain-file.json"))
当我将它部署到 docker 或 AWS 时出现此错误
/app/src/main/resources/support/certain-file.json (No such file or directory)
有没有更可靠的方法来“导航”到资源文件夹中的文件?我的意思是它不会受到影响,无论是 Windows/Linux/Kubernetes/etc 吗?
【问题讨论】:
-
这取决于该文件的位置。在
src/main/resources? -
绝对路径应该可以。您确定该文件存在于 AWS 上运行的映像中吗?没有可以安装在父文件夹顶部的卷?
-
@Eugene,是的,它在资源文件夹下
-
访问资源的常用方法是通过类路径,而不是文件名。参见例如this question.
-
@gidds 谢谢,现在它正在工作。请给我一个概述,为什么 MyCurrentClass::class.java.getResource("/...").readText() 在 Windows 中都作为 Docker 工作,而我的上述方法基于 java.io.File 和 java.nio .file.Paths 仅适用于 Windows?也许您可以指出为什么您认为类路径是通常/更好的方式,然后我会为您解答。
标签: java linux kotlin kubernetes nio