docker - Docker上运行的springboot无法从资源中读取文件

标签 docker spring-boot java-8 apache-poi

我有一个默认结构的 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/

相关文章:

apache - Spring Boot 和 Apache2 在同一服务器和端口上

authentication - spring-security-oauth2 JwkTokenStore 与自定义用户详细信息服务

带有 if 子句的 Java 8 比较器

selenium - 如何链接和扩展多个 docker 容器?

docker - 将根文件夹复制到 docker 根路径?

docker - 无效的顶级属性 "external_links"

spring-boot - 如何配置我的 NGINX 以在我的 Spring Boot 应用程序上允许 CSRF 保护

java - LongAdder 扩展了哪个类?

java - 使用 Streams 将嵌套整数列表转换为二维数组 ( List<List<Integer>> -> int[][] )

docker容器与群通信问题