JAR在本地工作,但在Docker容器(Apache-POI)中挂起失败

我有一个JAR获取外部XLSX资源,并使用Apache-POI打开工作簿

FileInputStream file = new FileInputStream("sheets/template.xlsx"); Workbook workbook = new XSSFWorkbook(file); 

当我在本地运行JAR时,一切正常,但是,当我在Docker中执行JAR时,JAR在尝试创build工作簿时似乎挂起,没有任何exception抛出。

有任何想法吗? 我可以提供更多的信息。

编辑更多信息:

/ sheets /目录存在于我的容器的根目录中:

在这里输入图像说明

我应该提到的是,如果我在本地机器上运行java -jar app.jar,那么以下文件结构一切正常:

 . +-- app.jar +-- sheets/ +-- template.xlsx 

文件的path对我来说似乎很诡异。 “/sheets/template.xlsx”意味着你所在环境的根,但根据你的输出,你不在容器的根目录下,而是在/ usr / src / app中。 尝试取出“/”,使string为“sheets / template.xlsx”,或将其更改为目录“/usr/src/app/sheets/template.xlsx”的绝对path。

在你的盒子(docker外)app.jar是否存在于根目录下? 如果这样就能解释一切。

发现,在我的程序中有一个内存泄漏,它超过了我在本地机器上分配的docker的内存。 Docker不会在本地告诉我,但Heroku让我知道:

在这里输入图像说明