jar在本地工作,但在docker容器ApachePOI中挂起失败

zazmityj  于 2021-07-09  发布在  Java
关注(0)|答案(2)|浏览(345)

我有一个jar,它获取外部xlsx资源并打开一个带有apachepoi的工作簿

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

当我在本地运行jar时,一切都很顺利,然而,当我在docker中执行jar时,jar在尝试创建工作簿时似乎挂起了,没有抛出异常,什么都没有。
有什么想法吗?我可以提供更多信息。
编辑更多信息:
/sheets/目录位于我的容器的根目录中:

我应该提到的是,如果我在本地机器上运行java-jar app.jar,那么使用以下文件结构,一切都会顺利进行:

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

disho6za1#

我发现,我的程序内存泄漏,超过了我在本地机器上分配的docker内存。docker不愿在当地告诉我,但heroku让我知道:

ahy6op9u

ahy6op9u2#

文件的路径在我看来很可疑。”/sheets/template.xlsx“表示您所处环境的根目录,但根据您的输出,您不在容器的根目录中,而是在/usr/src/app中。尝试去掉“/”,使字符串为“sheets/template.xlsx”,或将其更改为目录“/usr/src/app/sheets/template.xlsx”的绝对路径。
在你的盒子里(docker之外),app.jar是否存在于根目录中?如果是这样,那就可以解释一切了。

相关问题