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

时间:2017-10-31 18:45:47

标签: java docker apache-poi

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

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

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

有什么想法吗?我可以提供更多信息。

修改详情:

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

enter image description here

我应该提一下,如果我在本地机器上运行java -jar app.jar,一切都可以顺利运行,具有以下文件结构:

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

2 个答案:

答案 0 :(得分:2)

该文件的路径对我来说似乎很可疑。 &#34; /sheets/template.xlsx"将意味着您所处环境的根源,但根据您的输出,您不是在容器的根目录中,而是在/ usr / src / app中。尝试取出&#34; /&#34;所以字符串将是&#34; sheets / template.xlsx&#34;,或者将其更改为目录的绝对路径&#34; /usr/src/app/sheets/template.xlsx"。< / p>

在你的盒子上(在docker之外)app.jar是否存在于root中?如果这样可以解释一切。

答案 1 :(得分:0)

想出来,我的程序中存在内存泄漏,并且超出了我在本地计算机上分配的docker内存。 Docker不会在当地告诉我,但Heroku让我知道:

enter image description here