Spring boot 无法使用IBM JRE 1.8启动Spring引导可执行jar

Spring boot 无法使用IBM JRE 1.8启动Spring引导可执行jar,spring-boot,ibm-jvm,Spring Boot,Ibm Jvm,我们有一个Spring引导应用程序,它构建为一个可执行jar,使用Oracle和OpenJDK JRE(使用1.8版本)运行良好 但是,尝试使用IBM1.8JRE运行它会在命令行中导致以下错误 Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit. 如果我们执行jar(使用/application.jar)或使用java-jar-app

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

但是,尝试使用IBM1.8JRE运行它会在命令行中导致以下错误

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-jarapplication.jar
启动应用程序。因此,IBMJRE似乎不喜欢启动脚本

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


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

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

对于选项1),这不是一个好主意,因为您没有显式地选择jvm二进制文件,而是依赖操作系统为您选择一个。 了解binfmt_杂项机制:

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


请参阅此处的文档:

Hi,问题在于任何一种方法。问题似乎是ibmjre不喜欢springboot在创建可执行jar时添加的嵌入式启动脚本。如果我们删除脚本,就可以了。一个有趣的注意事项是,当使用额外的命令行参数时(可以是后面的任何参数(例如
java-jar-application.jar-randomextraparameter
),我们已经成功地运行了可执行jar,因此您可能已经达到了IBM java JRE(J9)或Spring Boot项目的极限。最好是在以下方面寻求帮助: