maven-surefire-plugin在GitLab CI OpenJDK17环境运行失败原因咨询
maven-surefire-plugin在OpenJDK 17环境下运行失败的核心原因
- 非法JVM参数直接导致进程启动失败
你报错日志中的测试进程启动命令携带了-XX:MaxPermSize=256m参数,永久代(PermGen)在JDK 8版本就已被元空间(Metaspace)完全替代,该参数从JDK 8开始废弃,JDK 16及更高版本会直接将其识别为非法启动参数,JVM启动时会立即报错退出,这就是报错信息中Process Exit Code: 1的直接诱因。 - 插件版本未适配JDK 17特性
低于3.0.0-M5版本的maven-surefire-plugin没有完成JDK 9+模块化系统、JDK 17强封装规则的适配,插件内部生成fork进程参数的逻辑、调用的反射操作都不符合JDK 17的运行要求,即使移除非法参数,旧版本插件也大概率会出现启动失败问题。
如需保留JDK 17运行环境可按如下步骤修复
- 移除所有JDK 8及以下版本专属的JVM配置参数,包括
-XX:MaxPermSize、-XX:PermSize,如果需要限制元空间上限可改用-XX:MaxMetaspaceSize参数 - 将maven-surefire-plugin升级到3.0.0-M5及以上的兼容版本,pom.xml参考配置如下:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.2.5</version> </plugin>
内容的提问来源于stack exchange,提问作者jbx
相关产品推荐
相关产品推荐

