Tengo un proyecto trivial de Maven:
src
└── main
└── java
└── module-info.java
pom.xml
pom.xml:
<groupId>org.example</groupId>
<artifactId>example</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>example</name>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<release>10</release>
</configuration>
</plugin>
</plugins>
</build>
Cuando construyo el proyecto vía mvn -X install -DskipTests=true
, falla:
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:testCompile (default-testCompile) on project example: Execution default-testCompile of goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:testCompile failed.
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:213)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:154)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:146)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:309)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:194)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:107)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:993)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:345)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:191)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.apache.maven.plugin.PluginExecutionException: Execution default-testCompile of goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:testCompile failed.
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:145)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
... 20 more
Caused by: java.lang.IllegalArgumentException
at org.objectweb.asm.ClassReader.<init>(Unknown Source)
at org.objectweb.asm.ClassReader.<init>(Unknown Source)
at org.objectweb.asm.ClassReader.<init>(Unknown Source)
at org.codehaus.plexus.languages.java.jpms.AsmModuleInfoParser.parse(AsmModuleInfoParser.java:80)
at org.codehaus.plexus.languages.java.jpms.AsmModuleInfoParser.getModuleDescriptor(AsmModuleInfoParser.java:54)
at org.codehaus.plexus.languages.java.jpms.LocationManager.resolvePaths(LocationManager.java:83)
at org.apache.maven.plugin.compiler.TestCompilerMojo.preparePaths(TestCompilerMojo.java:281)
at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:762)
at org.apache.maven.plugin.compiler.TestCompilerMojo.execute(TestCompilerMojo.java:176)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
... 21 more
¿Hay alguna manera de arreglar esto?
maven-compiler-plugin:3.8.0
para corregir el error anterior .Respuestas:
A partir del 30 de julio de 2018 para solucionar el problema anterior, se puede configurar la versión de Java utilizada dentro de Maven para cualquier hasta JDK / 11 y hacer uso del
maven-compiler-plugin:3.8.0
para especificar una versión de 9,10,11 sin ninguna dependencia explícita .Nota : - El valor predeterminado para el origen / destino se ha elevado de 1.5 a 1.6 con esta versión. - Notas de la versión.
Editar [30.12.2018]
De hecho, puede utilizar la misma versión de
maven-compiler-plugin
mientras compila el código contra JDK / 12 también.Más detalles y una configuración de muestra sobre cómo compilar y ejecutar una función de vista previa JDK con Maven .
fuente
maven.compiler.release
:<properties><maven.compiler.release>11</maven.compiler.release></properties>
ACTUALIZAR
La respuesta ahora es obsoleta. Mira esta respuesta .
maven-compiler-plugin
depende de la versión anterior de ASM que aún no es compatible con Java 10 (y Java 11). Sin embargo, es posible especificar explícitamente la versión correcta de ASM:Puede encontrar lo último en https://search.maven.org/search?q=g:org.ow2.asm%20AND%20a:asm&core=gav
fuente
Parece necesario aumentar su complemento maven-compiler a 3.8.0 pero no es suficiente. Si todavía tiene problemas, también debe asegurarse de que su variable de entorno JAVA_HOME esté configurada en Java 10 (u 11) si está ejecutando desde la línea de comandos. (El mensaje de error que recibe no le dirá esto). O si está ejecutando desde un IDE, debe asegurarse de que esté configurado para ejecutar maven con su JDK actual.
fuente
Puede que no sea exactamente el mismo error, pero tuve uno similar.
Verifique la versión Java de Maven
Dado que Maven también se está ejecutando con Java, verifique primero con qué versión se está ejecutando su Maven:
Vuelve:
Versión incompatible
Aquí arriba mi maven está corriendo con
Java Version 1.8.0_151
. Entonces, incluso si especifico maven para compilar conJava 11
:Lógicamente imprimirá este error:
Cómo configurar una versión específica de Java para Maven
Lo lógico es configurar una versión Java más alta en Maven (por ejemplo, Java versión 11 en lugar de 1.8).
Maven hace uso de la variable de entorno
JAVA_HOME
para encontrar la versión de Java para ejecutar. Por lo tanto, cambie esta variable al JDK con el que desea compilar (por ejemplo, OpenJDK 11).Prueba de cordura
Luego, vuelva
mvn --version
a ejecutar para asegurarse de que la configuración se haya solucionado:rendimientos
Lo cual es mucho mejor y correcto compilar código escrito con las especificaciones de Java 11.
fuente
Especifique maven.compiler.source y versiones de destino.
1) Versión Maven que admite jdk que utilizas. En mi caso JDK 11 y maven 3.6.0.
2) pom.xml
Como alternativa, puede especificar completamente el complemento del compilador maven. Ver respuestas anteriores. Es más corto en mi ejemplo :)
3) reconstruya el proyecto para evitar errores de compilación en su IDE.
4) Si aún no funciona. En Intellij Idea, prefiero usar terminal en lugar de usar terminal del sistema operativo. Luego, en Idea, vaya a Archivo -> Configuración -> Herramientas de compilación -> Maven. Trabajo con maven que descargué de apache (de forma predeterminada, Idea usa maven incluido). Reinicie Idea entonces y
mvn clean install
vuelva a correr . También asegúrese de tener las variables de entorno Path , MAVEN_HOME , JAVA_HOME correctas .También vi esta frase, pero no funciona.
Hice algunos proyectos de inicio rápido, que reutilizo en otros proyectos, no dude en verificar:
fuente
Si está utilizando el arranque de primavera, agregue estas etiquetas en pom.xml.
y
Puede cambiar la versión de Java a 11 o 13 también en la
<maven.compiler.release>
etiqueta.Simplemente agregue las siguientes etiquetas en pom.xml
Puede cambiar el 11 a 10, 13 también para cambiar la versión de Java. Estoy usando Java 13, que es la última. Esto funciona para mi.
fuente
Muy bien, para mí nada funcionó.
Estaba usando un arranque de primavera con hibernación. La versión de arranque de primavera era ~ 2.0.1 y seguiría obteniendo este error y una excepción de puntero nulo en la compilación. El problema era con la hibernación que necesitaba un cambio de versión. Pero después de eso tuve otros problemas que parecían que el procesador de anotaciones no era reconocido, así que decidí cambiar el lanzamiento de 2.0.1 a 2.1.7 y todo funcionó como se esperaba.
Todavía necesita agregar el complemento anterior resistente ¡
Espero que ayude!
fuente