Eu tenho um projeto trivial do 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>
Quando eu construo o projeto via mvn -X install -DskipTests=true
, ele falha:
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
Existe uma maneira de corrigir isso?
maven-compiler-plugin:3.8.0
para corrigir o erro acima .Respostas:
A partir de 30 de julho de 2018, para corrigir o problema acima, é possível configurar a versão java usada no maven para qualquer JDK / 11 e utilizá-la
maven-compiler-plugin:3.8.0
para especificar uma versão de 9,10,11 sem nenhuma dependência explícita .Nota : - O valor padrão para origem / destino foi aumentado de 1,5 para 1,6 com esta versão. - notas de lançamento.
Editar [30.12.2018]
De fato, você pode usar a mesma versão
maven-compiler-plugin
ao compilar o código no JDK / 12 também.Mais detalhes e uma configuração de amostra de como Compilar e executar um recurso de visualização do JDK com o Maven .
fonte
maven.compiler.release
:<properties><maven.compiler.release>11</maven.compiler.release></properties>
ATUALIZAR
A resposta agora está obsoleta. Veja esta resposta .
maven-compiler-plugin
depende da versão antiga do ASM, que ainda não suporta Java 10 (e Java 11). No entanto, é possível especificar explicitamente a versão correta do ASM:Você pode encontrar as últimas em https://search.maven.org/search?q=g:org.ow2.asm%20AND%20a:asm&core=gav
fonte
Aumentar o seu maven-compiler-plugin para 3.8.0 parece ser necessário, mas não suficiente. Se você ainda estiver tendo problemas, verifique também se a variável de ambiente JAVA_HOME está definida como Java 10 (ou 11) se estiver executando a partir da linha de comandos. (A mensagem de erro recebida não informa isso.) Ou, se você estiver executando em um IDE, verifique se ele está configurado para executar o maven com seu JDK atual.
fonte
Pode não ser exatamente o mesmo erro, mas eu tive um erro semelhante.
Verificar versão Java do Maven
Como o Maven também está executando o Java, verifique primeiro com qual versão o Maven está executando:
Retorna:
Versão incompatível
Aqui acima, meu maven está fugindo
Java Version 1.8.0_151
. Portanto, mesmo se eu especificar o maven para compilar comJava 11
:Ele imprimirá logicamente este erro:
Como definir uma versão java específica para o Maven
A coisa lógica a fazer é definir uma versão Java mais alta para Maven (por exemplo, versão Java 11 em vez de 1.8).
O Maven utiliza a variável de ambiente
JAVA_HOME
para encontrar a versão Java a ser executada. Portanto, altere essa variável para o JDK que você deseja compilar (por exemplo, OpenJDK 11).Verificação de sanidade
Em seguida, execute novamente
mvn --version
para garantir que a configuração foi resolvida:rendimentos
O que é muito melhor e correto para compilar o código escrito com as especificações do Java 11.
fonte
Especifique as versões maven.compiler.source e target.
1) Versão do Maven que suporta jdk que você usa. No meu caso, o JDK 11 e o maven 3.6.0.
2) pom.xml
Como alternativa, você pode especificar completamente o plug-in do compilador maven. Veja as respostas anteriores. É mais curto no meu exemplo :)
3) reconstrua o projeto para evitar erros de compilação no seu IDE.
4) Se ainda não funcionar. No Intellij Idea, prefiro usar o terminal do que usar o terminal do SO. Em seguida, no Idea, vá para arquivo -> configurações -> ferramentas de construção -> maven. Trabalho com o maven que baixei do apache (por padrão, o Idea usa o maven incluído). Reinicie o Idea e execute
mvn clean install
novamente. Verifique também se você possui as variáveis de ambiente Path , MAVEN_HOME , JAVA_HOME corretas .Eu também vi esse verso, mas não funciona.
Fiz alguns projetos iniciais rápidos, que reutilizo em outros projetos, sinta-se à vontade para verificar:
fonte
Se você estiver usando a inicialização por mola, adicione essas tags no pom.xml.
e
Você pode alterar a versão java para 11 ou 13 também na
<maven.compiler.release>
tag.Basta adicionar as tags abaixo em pom.xml
Você pode alterar o 11 para 10, 13 e também para alterar a versão java. Estou usando o java 13, que é o mais recente. Funciona para mim.
fonte
Tudo bem, então para mim nada funcionou.
Eu estava usando a bota com hibernação. A versão de inicialização do Primavera era ~ 2.0.1 e eu continuaria recebendo esse erro e exceção de ponteiro nulo na compilação. O problema foi com o hibernate que precisava de um aumento de versão. Mas depois disso, tive alguns outros problemas que pareciam que o processador de anotações não era reconhecido, então decidi aumentar a versão 2.0.1 para a versão 2.1.7 e tudo funcionou conforme o esperado.
Você ainda precisa adicionar o plug-in acima.
Espero que ajude!
fonte