Erro fatal na compilação: versão inválida do destino: 1.8 -> [Ajuda 1]

170

Problema semelhante ao postado na versão de destino inválida: 1.7, mas depois de seguir o blog, meu problema ainda não foi resolvido.

Falha ao executar o objetivo org.apache.maven.plugins: maven-compiler-plugin: 3.1: compile (compilação padrão) no projeto hm_app: Erro fatal na compilação: liberação de destino inválida: 1.8 -> [Ajuda 1]

Eu estava seguindo como tutorial quando enfrentei esse problema.

abt java & mvn

C:\mvn>echo %JAVA_HOME% 
C:\mvn>echo %JRE_HOME%
C:\mvn>echo %MAVEN_HOME% yields

saídas

C:\Program Files\Java\jdk1.7.0_51
C:\Program Files\Java\jre7
C:\apache-maven-3.0.4
rvd
fonte
3
... e você tem certeza de que o Java 8 está instalado em algum lugar?
Makoto
Eu tenho x86, 64 java 7 e não java 8
rvd
3
OK. Então, por que você está tentando compilar o código Java 8 sem um compilador Java 8?
Makoto
@Makoto ty para olhar para o meu problema ao instalar java 8 resolvido .... homem ty :)
RVD
@ Makoto Finalmente eu entendi o que você estava dizendo "Ok. Então, por que você está tentando compilar o código Java 8 sem um compilador Java 8?" então eu mudei no meu arquivo pom.xml java.version> 1.8 </java.version> para java.version> 1.7 </java.version> e eu também poderia usar a compilação do mvn no java7
rvd

Respostas:

281

Você configurou o %JAVA_HOMEjdk 1.7, mas está tentando compilar usando o 1.8. Instale o jdk 1.8 e certifique-se de %JAVA_HOMEapontar para isso ou reduza o release de destino para 1.7.

liberação de destino inválida: 1,8

O release de destino refere-se à versão jdk.

Zavior
fonte
7
mais uma solução possível no meu caso é editar o arquivo pom.xml java.version> 1.8 </java.version> para java.version> 1.7 </java.version>
rvd
1
É aí que o maven procura a versão java. Tão efetivamente você alterou a versão java para uma que você instalou no seu% JAVA_HOME.
Zavior
2
Em um meu Mac, eu exporto JAVA_HOME = /usr/libexec/java_home -v 1.8para definir o JAVA_HOME no local apropriado para 1,8 JDK. Forneça sua versão favorita no lugar do 1.8. (Existem backticks após = e após 8).
bruce szalwinski
Sim, certo, você me pegou. Eu mudei para compilar outro programa legado que suporta apenas 1,7 ontem: D Obrigado!
Davut Gürbüz
31

Coloque o valor no plugin:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
    </configuration>
</plugin>

O erro foi usado:

<source>${java.version}</source>
<target>${java.version}</target>
Camila Macedo
fonte
2
No meu caso, a solução é para definir tanto de origem e de destino para 1,7
thinkhy
em que arquivo posso encontrar isso?
Yusril Maulidan Raji 30/01
21

No meu caso, o maven "Run configuration" estava usando o JRE errado (1.7). Certifique-se de verificar Executar -> Executar configurações -> (guia) JRE para ser algum jdk1.8.x.

Roland Ettinger
fonte
isso é verdade, então temos que seguir as coisas para verificar próxima vez se esse erro vem: JAVA_HOME, BUILD_Configuration, RUN_Configuration
Farhan
13

O problema foi resolvido porque eu estava tendo um JDK apontando para 1.7 e o JRE apontando para 1.8. Check in prompt de comando minha digitação

java -version

e

javac -version.

Ambos devem ser iguais.  

Bikramjit Saha
fonte
5

Para eclipse, aqui está como eu resolvi meu problema:

  1. Preferências -> Compilador -> Nível do Reclamante do Compilador (Altere para 1.8) insira a descrição da imagem aqui

  2. Perferências -> JREs Instalados -> selecione JAVA SE 8 1.8 insira a descrição da imagem aqui

  3. Reconstrua via maven usando Run como maven build.

Ele não deve mais mostrar o erro de destino inválido.
Nota: Não precisei definir ou alterar nenhuma outra variável no meu terminal. Espero que isto ajude.

РАВИ
fonte
2

Colocar isso no seu .profile cuidará dinamicamente do seu $JAVA_HOME

export JAVA_HOME=$(/usr/libexec/java_home)

Feche seu shell depois, abra um novo e teste com

echo $JAVA_HOME

Deve exibir algo como

/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home

Caso contrário , remova quaisquer outras atribuições de JAVA_HOME nos scripts de inicialização. Lembre-se de que esses scripts de inicialização começam com um, .para que sejam ocultos e não sejam incluídos ao usar *curinga, por exemplo, se você deseja grep todos os arquivos do diretório inicial, é necessário:

grep -s JAVA_HOME ~/.* --exclude=.bash_history
lilalinux
fonte
1

O problema que eu estava enfrentando era que eu era capaz de fazer uma compilação maven no prompt de comando, mas não no Eclipse. O que funcionou para mim no eclipse é que eu mudei a configuração de execução para apontar para a pasta JRE dentro do JDK, em vez de deixá-la em Pasta JDK apenas conforme o padrão. Esta solução também pode funcionar para você, mas tente isso se, e somente se, todos os caminhos java estiverem corretos, java e javac estiverem mostrando a mesma versão presente no destino do pom.xml.

Vaibhav Gupta
fonte
Este foi o meu problema e solução.
Skychan
1

Eu enfrentei esse problema ao implantar no Dokku, por algum motivo, ele estava escolhendo o JDK 1.7

A criação de um system.propertiesarquivo e a configuração java.runtime.version=1.8resolveram o problema. Dokku agora usa Java versão 8. Escolhendo um JDK no Heroku

Eu nunca tive que fazer isso antes ...

Edmore M Gonese Digolodollarz
fonte
A dica ainda funciona. Eu tive que pesquisar muito para alterar a versão Java no Dokku para 11. Muito obrigado.
Mister Vanderbilt
1

Como mencionado por Camila Macedo - você precisa apontar explicitamente a versão java para o compilador-plugin. Para inicialização por mola, você pode fazer isso pela próxima propriedade:

  <properties>
    <java.version>1.8</java.version>
    <maven.compiler.release>8</maven.compiler.release>
  </properties>
M. Gryshenko
fonte
Sim, a configuração foi maven.compiler.releasecorrigida no meu projeto Maven.
Cortex
1

Usando o IntelliJ, tive que instalar outra versão do JDK (superior). Após reiniciar o IDE, tudo funcionou e até todas as dependências foram resolvidas.

Markus Zeller
fonte
1
Reiniciar o intelecto era a chave para mim. Atualizei a variável de ambiente JAVA_HOME para apontar para uma versão java diferente, mas parece que a variável do sistema não é atualizada na sessão CMD existente. Possivelmente, basta criar uma nova sessão do Terminal.
Ubeogesh
0

Esta pergunta não foi feita explicitamente sobre o Docker, mas recebi o mesmo erro quando tinha um arquivo pom.xml que estava direcionado para 1,9 ...

<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <maven.compiler.source>1.9</maven.compiler.source>
  <maven.compiler.target>1.9</maven.compiler.target>
</properties>

... mas, em seguida, tentou executar testes em um contêiner do Docker especificando "maven" por si só.

docker run -t --rm -v m2_repository:/root/.m2/repository -v $(pwd):/work -w /work maven mvn -e test

Para mim, a correção era direcionar a versão exata que eu precisava.

docker run -t --rm -v m2_repository:/root/.m2/repository -v $(pwd):/work -w /work maven:3.5.2-jdk-9 mvn test

(Você pode aprender mais aqui .)

vivat pisces
fonte
0

Na máquina Windows, você pode definir temporariamente a versão Java.
Por exemplo, para alterar a versão para Java 8, execute este comando em cmd:

set JAVA_HOME=C:\\...\jdk1.8.0_65
user1316369
fonte
0

Execute uma atualização forçada do Maven que trará as versões Jar 1.8 compatíveis e, em seguida, enquanto estiver construindo, atualize as versões JRE no ambiente Execute para 1.8 nas Configurações de execução e pressione RUN

Sandy
fonte
0

Se você estiver usando o Eclipse IDE, entre no menu Janela e selecione preferências. Lá, procure JREs instalados e selecione o JRE necessário para construir o projeto.

Himanshu Kumar
fonte
-4

O que funcionou no meu caso é o seguinte:

Abri o pom.xmle substitui o dos plug-ins como abaixo.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.2</version>
    <configuration>
        <source>1.7</source>
        <target>1.7</target>
    </configuration>
</plugin>

Antes de editar as tags de origem e destino, ambas foram 1.8alteradas para 1.7e funcionou.

VIJAYKUMAR REDDY ALAVALA
fonte
Você entende a mudança que fez ou acabou de fazer a mudança esperando o melhor?
Popeye
Ambos. Entendo que o projeto agora está sendo executado na versão Java 1.7. Eu fiz isso esperando que funcionasse.
Vijaykumar REDDY ALAVALA