Java17搭配Maven Wrapper报MaxPermSize参数无法识别错误如何解决
问题根本原因
MaxPermSize是JDK 8及更早版本中用来控制永久代内存上限的VM参数,JDK 9起永久代被元空间(Metaspace)完全替代,该参数也随之被废弃,JDK 17已经完全不识别该参数,触发VM启动报错。
你没有主动配置该参数的前提下,参数一般来自全局环境变量或者旧版Maven Wrapper的遗留配置,可按以下步骤排查解决:
解决方案
步骤1:验证是否为全局MAVEN_OPTS环境变量导致
Windows环境下在终端执行以下命令临时清空当前会话的MAVEN_OPTS,再运行mvnw命令验证:
set MAVEN_OPTS= && ./mvnw.cmd -version
如果命令正常输出Maven版本信息,说明是全局环境变量配置了带MaxPermSize的MAVEN_OPTS:
- 打开Windows系统环境变量配置面板,找到
MAVEN_OPTS变量,删除其中的-XX:MaxPermSize=512m参数即可,剩余参数保留不影响Java 17运行。
步骤2:排查项目本地Maven配置
如果步骤1验证后仍然报错,检查项目根目录下的.mvn文件夹中的两个配置文件:
jvm.config:存储JVM启动参数maven.config:存储Maven运行参数
找到包含MaxPermSize的行,直接删除该行即可。
步骤3:升级Maven Wrapper版本
你当前使用的3.8.2版本的Maven Wrapper存在对高版本JDK的兼容问题,可升级到最新稳定版Maven Wrapper解决:
如果你本地安装了全局可用的Maven,直接执行以下命令即可完成升级:
mvn wrapper:wrapper -Dmaven=3.9.6
升级完成后重新执行mvnw命令即可正常运行。
内容的提问来源于stack exchange,提问作者Nikolas
相关产品推荐
相关产品推荐

