J'ai un projet Maven trivial:
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>
Quand je construis le projet via mvn -X install -DskipTests=true
, il échoue:
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
Y'a t'il un moyen d'arranger cela?
maven-compiler-plugin:3.8.0
pour corriger l'erreur ci-dessus .Réponses:
À partir du 30 juillet 2018, pour résoudre le problème ci-dessus, on peut configurer la version java utilisée dans maven sur tout JDK / 11 et utiliser le
maven-compiler-plugin:3.8.0
pour spécifier une version de 9,10,11 sans aucune dépendance explicite .Remarque : - La valeur par défaut pour la source / la cible est passée de 1,5 à 1,6 avec cette version. - notes de version.
Modifier [30.12.2018]
En fait, vous pouvez utiliser la même version de
maven-compiler-plugin
lors de la compilation du code avec JDK / 12.Plus de détails et un exemple de configuration sur la façon de compiler et d'exécuter une fonction de prévisualisation JDK avec Maven .
la source
maven.compiler.release
:<properties><maven.compiler.release>11</maven.compiler.release></properties>
METTRE À JOUR
La réponse est désormais obsolète. Voyez cette réponse .
maven-compiler-plugin
dépend de l'ancienne version d'ASM qui ne prend pas encore en charge Java 10 (et Java 11). Cependant, il est possible de spécifier explicitement la bonne version d'ASM:Vous pouvez trouver la dernière à https://search.maven.org/search?q=g:org.ow2.asm%20AND%20a:asm&core=gav
la source
Booster votre maven-compiler-plugin vers la version 3.8.0 semble être nécessaire mais pas suffisant. Si vous rencontrez toujours des problèmes, vous devez également vous assurer que votre variable d'environnement JAVA_HOME est définie sur Java 10 (ou 11) si vous exécutez à partir de la ligne de commande. (Le message d'erreur que vous recevez ne vous le dira pas.) Ou si vous exécutez à partir d'un IDE, vous devez vous assurer qu'il est configuré pour exécuter maven avec votre JDK actuel.
la source
Ce n'est peut-être pas exactement la même erreur, mais j'en ai eu une similaire.
Vérifiez la version Java de Maven
Puisque Maven est également exécuté avec Java, vérifiez d'abord avec quelle version votre Maven fonctionne:
Il renvoie:
Version incompatible
Ci-dessus, mon maven court avec
Java Version 1.8.0_151
. Donc même si je spécifie maven pour compiler avecJava 11
:Il imprimera logiquement cette erreur:
Comment définir une version Java spécifique sur Maven
La chose logique à faire est de définir une version Java plus élevée sur Maven (par exemple, la version 11 de Java au lieu de 1.8).
Maven utilise la variable d'environnement
JAVA_HOME
pour trouver la version Java à exécuter. Changez donc cette variable pour le JDK avec lequel vous voulez compiler (par exemple OpenJDK 11).Verification sanitaire
Ensuite, exécutez à nouveau
mvn --version
pour vous assurer que la configuration a été prise en charge:rendements
Ce qui est bien meilleur et correct pour compiler du code écrit avec les spécifications Java 11.
la source
Spécifiez maven.compiler.source et les versions cible.
1) La version Maven qui prend en charge jdk que vous utilisez. Dans mon cas, JDK 11 et maven 3.6.0.
2) pom.xml
Comme alternative, vous pouvez spécifier complètement le plugin du compilateur maven. Voir les réponses précédentes. C'est plus court dans mon exemple :)
3) reconstruisez le projet pour éviter les erreurs de compilation dans votre IDE.
4) Si cela ne fonctionne toujours pas. Dans Intellij Idea, je préfère utiliser le terminal au lieu d'utiliser le terminal du système d'exploitation. Ensuite, dans Idée, allez dans fichier -> paramètres -> outils de construction -> maven. Je travaille avec maven que j'ai téléchargé depuis apache (par défaut, Idea utilise maven fourni). Redémarrez ensuite Idea et
mvn clean install
recommencez. Assurez-vous également que vous avez le chemin correct , MAVEN_HOME , JAVA_HOME les variables d'environnement .J'ai aussi vu ce monoplace, mais cela ne fonctionne pas.
J'ai réalisé quelques projets de démarrage rapide, que je réutilise dans d'autres de mes projets, n'hésitez pas à vérifier:
la source
Si vous utilisez Spring Boot, ajoutez ces balises dans pom.xml.
et
Vous pouvez également changer la version java en 11 ou 13 dans la
<maven.compiler.release>
balise.Ajoutez simplement les balises ci-dessous dans pom.xml
Vous pouvez également changer le 11 en 10, 13 pour changer la version java. J'utilise java 13 qui est le plus récent. Ça marche pour moi.
la source
D'accord, donc pour moi, rien n'a fonctionné.
J'utilisais Spring Boot avec Hibernate. La version Spring Boot était ~ 2.0.1 et je continuerais à obtenir cette erreur et l'exception de pointeur nul lors de la compilation. Le problème était avec la mise en veille prolongée qui nécessitait une modification de version. Mais après cela, j'ai eu d'autres problèmes qui semblaient que le processeur d'annotations n'était pas reconnu, alors j'ai décidé de simplement passer le printemps de la version 2.0.1 à la version 2.1.7 et tout a fonctionné comme prévu.
Vous devez toujours ajouter le plugin ci-dessus, espérons que
cela vous aidera!
la source