Uso OpenJDK 17 con Maven Wrapper 3.8.2 de Spring Initializr (proyecto Maven, empaque JAR, Java 17, Spring Boot 2.6.0). Sin dependencias adicionales.
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)
Al ejecutar cualquiera de ./mvnw.cmd -version o ./mvnw.cmd clean install , siempre recibo el siguiente mensaje:
Unrecognized VM option 'MaxPermSize=512m' Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit.
Cambiar a OpenJDK 16.0.2 resuelve el problema, sin embargo, necesito trabajar con Java 17.
¿Cómo hacerlo funcionar? No hay ningún MaxPermSize=512m establecido.
De hecho -XX:MaxPermSize=size está etiquetado de la siguiente manera según las especificaciones de la herramienta Java® Development Kit versión 16/17 (consulte los enlaces):
Sin embargo, Maven Wrapper en el script mvnw.cmd , además del JAVA_HOME requerido, también usa un montón de variables de entorno opcionales como M2_HOME y estas comienzan con el prefijo MAVEN_ .
El importante es MAVEN_OPTS , donde puede aparecer una opción de Java eliminada que provoque la imposibilidad de iniciar la JVM en la versión más nueva. En mi caso, tuve algo como:
MAVEN_OPTS="-Xmx4g -XX:MaxPermSize=512m -Dfile.encoding=UTF-8 -Djavax.xml.accessExternalSchema=all" La solución es eliminar la opción de las variables de entorno o agregar esta línea al script Maven Wrapper para anular el valor MAVEN_OPTS , en la forma mínima:
MAVEN_OPTS=