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

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.


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>

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.


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.  


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.


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

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.


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 ...


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>

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.


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 .)


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

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


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.


-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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.