0

我们有一个 Spring Boot 应用程序,它被构建为一个可执行的 jar,并且使用 Oracle 和 OpenJDK JRE(使用 1.8 版本)运行良好。

但是,尝试使用 IBM 1.8 JRE 运行它会导致命令行出现以下错误。

Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

如果我们执行 jar (using ./application.jar) 或 usingjava -jar application.jar

这导致我们更改打包以不使 jar 可执行,这允许我们使用java -jar application.jar. 因此,IBM JRE 似乎不喜欢启动脚本。

问题是如果可能的话,我们不希望为不同的部署环境使用两种打包方法。

有没有人知道为什么 IBM JRE 不喜欢 jar 文件前面的脚本,以及是否有任何命令行选项可以禁用任何检查它的功能?

4

1 回答 1

0

从您的帖子中不清楚您是否有问题 1) 从 Linux 运行 jar,如 chmod a+x application.jar 并执行或 2) 通过 /opt/IBM/java/jre/bin/java -jar application.jar 运行

对于选项 1),这不是一个好主意,因为您没有明确选择 jvm 二进制文件,而是依赖操作系统为您选择一个。阅读有关 binfmt_misc 机制的信息:

https://en.m.wikipedia.org/wiki/Binfmt_misc

对于选项 2)-可能是类加载问题,请添加 /opt/IBM/java/jre/bin/java -verbose:class -jar application.jar

并在此处查阅文档:https ://www.ibm.com/developerworks/library/j-dclp1/index.html

于 2017-06-29T21:21:29.957 回答