我有一个默认结构的 springboot 项目。我在资源/数据下有一个 excel 文件。我的程序需要加载 excel 文件并将数据转储到每个工作表的不同表中。
当我从 Eclipse 运行时,程序正确加载 excel 文件并且一切看起来都很好。但是,当我在 Docker 上部署相同的应用程序时,它无法从资源中读取文件。
有人遇到过这个问题吗?你是怎么解决的?
最佳答案
首先尝试检查是Docker的原因,还是java代码有问题。 Spring Boot 创建了一个仅需 java -jar <your-spring-boot-artifact.jar>
即可运行的工件
如果即使没有 docker 也无法运行,那么您应该更改从 spring boot 应用程序(您的 java 代码)访问 Excel 文件的方式: 如果文件在resources文件夹下,应该打包到spring boot artifact中。
在这种情况下,您必须使用 getClass().getResourceAsStream()
访问文件,而不是依赖 java.io.File
API,因为 File API 不允许处理 Jar 中的文件,所以它不是常规文件系统。
关于docker - Docker上运行的springboot无法从资源中读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51034057/