在 Docker 上运行的 Springboot 无法从资源中读取文件

rtn*_*nyc 2 apache-poi java-8 docker spring-boot

我有一个默认结构的 springboot 项目。我在资源/数据下有一个 excel 文件。我的程序需要加载 excel 文件并将数据从每张表中转储到不同的表中。

当我从 Eclipse 运行时,程序正确加载了 excel 文件,一切看起来都很好。但是,当我在 Docker 上部署同一个应用程序时,它无法从资源中读取文件。

有没有人遇到过这个问题?你是怎么解决的?

Mar*_*nik 6

首先尝试检查是否是Docker的原因,或者java代码有问题。Spring Boot 创建了一个可以运行的工件java -jar <your-spring-boot-artifact.jar>

如果即使没有 docker 也无法运行,那么您应该更改从 Spring Boot 应用程序(您的 java 代码)访问 Excel 文件的方式:如果文件位于资源文件夹中,则应将其打包到 spring boot artifact 中。

在这种情况下,您必须使用getClass().getResourceAsStream()来访问文件,而不是依赖java.io.FileAPI,因为 File API 不允许使用 Jar 中的文件,它不是常规文件系统。