【问题标题】:Java 17 with Maven Wrapper results in Unrecognized VM option 'MaxPermSize=512m'带有 Maven Wrapper 的 Java 17 导致无法识别的 VM 选项“MaxPermSize=512m”
【发布时间】:2022-04-21 14:55:42
【问题描述】:

我将OpenJDK 17 与来自Spring Initializr 的Maven Wrapper 3.8.2 一起使用(Maven 项目、JAR 打包、Java 17、Spring Boot 2.6.0)。没有额外的依赖。

user@DESKTOP-U2OU5HG MINGW64 /c/Projects/my-project (master)
$ java -version
openjdk version "17" 2021-09-14
OpenJDK Runtime Environment (build 17+35-2724)
OpenJDK 64-Bit Server VM (build 17+35-2724, mixed mode, sharing)

在运行./mvnw.cmd -version 或./mvnw.cmd clean install 中的任何一个时,我总是会收到以下消息:

Unrecognized VM option 'MaxPermSize=512m'
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

切换到OpenJDK 16.0.2 解决了这个问题,但是,我需要使用 Java 17。

如何让它运行?无处可设MaxPermSize=512m。

【问题讨论】:

  • 它可能来自.mvn/jvm.config。
  • 设置在某处。考虑搜索所有文件
  • 这不是回答你的问题吗,stackoverflow.com/questions/47112412/…。在 Java9 之后,MaxPermSize=512m 似乎被删除了。
  • 是的。较新的 JVM 不喜欢来自某个地方的命令选项。您可能希望单步执行 mvnw 脚本。
  • @ManeeshaIndrachapa 甚至 Java 8 也不支持这个选项。

标签: java spring-boot maven java-17 maven-wrapper


【解决方案1】:

确实,-XX:MaxPermSize=size 根据 Java® 开发工具包版本 16/17 工具规范标记如下(请参阅链接):

然而,mvnw.cmd 脚本中的 Maven 包装器除了必需的 JAVA_HOME 之外,还使用了一堆可选 环境变量,例如 M2_HOME 和这些以 MAVEN_ 开头的变量前缀。

重要的是MAVEN_OPTS,其中可能会出现这样一个已删除的 Java 选项,从而导致无法在较新版本上启动 JVM。就我而言,我有类似的东西:

MAVEN_OPTS="-Xmx4g -XX:MaxPermSize=512m -Dfile.encoding=UTF-8 -Djavax.xml.accessExternalSchema=all"

解决方案是要么从环境变量中删除该选项,要么将此行添加到 Maven Wrapper 脚本以覆盖 MAVEN_OPTS 值,以最小形式:

MAVEN_OPTS=

【讨论】:

    猜你喜欢
    • 2018-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-11
    • 2021-12-06
    • 1970-01-01
    • 2020-10-24
    相关资源
    最近更新 更多