我们有一个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(使用./application.jar
)或使用java -jar application.jar
这导致我们将包装更改为不使jar可执行,这允许我们使用java -jar application.jar
启动应用程序。所以看来IBM JRE并不喜欢启动脚本。
问题是,如果可能,我们不希望为不同的部署环境提供两种打包方法。
有没有人有经验说明为什么IBM JRE不喜欢jar文件前面的脚本,以及是否有任何命令行选项来禁用它所做的任何检查?
答案 0 :(得分: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