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

时间:2018-06-26 02:26:33

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

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

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

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

1 个答案:

答案 0 :(得分:3)

首先尝试检查Docker是一个原因,还是Java代码有问题。春季启动会创建一个仅需java -jar <your-spring-boot-artifact.jar>

即可运行的工件

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

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