A versão do Java muda automaticamente para java 1.5 após a atualização do maven

121

Estou usando o eclipse como IDE. Quando clico com o botão direito no projeto e clico em maven atualizar minha versão do java, mude para 1.5. Aqui está o que eu fiz até agora, segui todas as etapas listadas aqui

http://qussay.com/2013/09/13/solving-dynamic-web-module-3-0-requires-java-1-6-or-newer-in-maven-projects/

  1. Mudei o "caminho de construção Java" para "espaço de trabalho padrão jre 1.8.0_25"
  2. Em seguida, mudou "compilador java" para 1.8
  3. Em seguida, alterou "aspectos do projeto"> java> 1.8
  4. Versão java pom.xml alterada para 1.8
    <build>
        <plugins>
            <plugin>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-maven-plugin</artifactId>
                <version>9.1.3.v20140225</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugin</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

Depois de tudo isso, quando clico em "Maven update" minha versão do java muda para 1.5 automaticamente. Também nas etapas acima, a versão das duas primeiras etapas também muda para 1.5 automaticamente. Como posso consertar isso?

asdlfkjlkj
fonte

Respostas:

222

Abra seu pom.xmlarquivo e adicione as seguintes linhas a ele:

<properties>
   <maven.compiler.source>1.8</maven.compiler.source>
   <maven.compiler.target>1.8</maven.compiler.target>
</properties>

Onde 1.8está a versão java do seu JDK / JRE atual. Outra maneira de fazer isso é adicionar um <build>com o maven-compile-pluginquanto

<build>
<plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.2</version> <!-- or whatever current version -->
    <configuration>
      <source>1.8</source>
      <target>1.8</target>
    </configuration>
  </plugin>
</plugins>
</build>

EDITAR

Se você está procurando uma maneira de fazê-lo funcionar com as versões 9+ do Java, dê uma olhada na resposta de @JDelorean aqui e não se esqueça de dar a ele um voto positivo também :)

Jorge Campos
fonte
4
Acho que já fiz da segunda forma e postei o código também. Não veja o que você alterou nesse código
asdlfkjlkj
1
Sim. Quando eu respondi, você não postou o código. Portanto, adicione a primeira parte da minha resposta. A propertiesetiqueta. Se o seu POM já tiver uma propertiestag, basta adicionar as tags dentro dele, ele deve funcionar bem.
Jorge Campos
@asdlfkjlkj seu eclipse está usando o maven embutido ou uma instalação externa do maven? Outra questão que seu eclipse está apontando para um JRE ou para um JDK? Essas são duas perguntas sobre eclipse + maven que fazem toda a diferença.
Jorge Campos
@JorgeCampos - Eu postei uma nova pergunta. Você tem alguma ideia disso? stackoverflow.com/questions/42855512/…
Aishu
@JorgeCampos onde encontro o maven-complier-pluginpara adicionar o <build>? obrigado
夢 の の 夢
23

Tive o mesmo problema quando instalei o Java 9. Meu projeto teria como padrão o J2SE-1.5 Execution Environment. Estranhamente, o nível de conformidade do Java 9 não é referenciado como nas versões anteriores, ou seja, "1.8", mas como "9". Então, eu tive que fornecer minhas propriedades e a configuração do plug-in do compilador Maven de acordo:

<properties>
    <maven.compiler.source>9</maven.compiler.source>
    <maven.compiler.target>9</maven.compiler.target>
</properties>

e

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

Isso parece ter resolvido o problema.

JDelorean
fonte
1
Também é verdade para Java 10+ e gostaria de acrescentar que em um projeto Maven multimódulo só é necessário no POM pai.
mmem
Com o Java 9 e superior, há uma nova --release <version>opção de compilador, que é preferida em vez de origem / destino. Isso pode ser configurado com maven.compiler.releasepropriedade ou <release>configuração no plugin maven-compiler. Consulte: stackoverflow.com/questions/43102787/…
Thomas Taylor
7

A causa raiz deste problema é que se por qualquer motivo o Eclipse não puder resolver um valor válido para a maven.compiler.sourcepropriedade ao gerar / atualizar o arquivo .classpath do pom, ele simplesmente usará como padrão org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5.

Como habilmente respondido por @ jorge-campos , existem várias maneiras de definir essa propriedade.

No entanto, a resposta de Jorge não pareceu funcionar para mim. Aqui estão minhas configurações:

<properties>
    <javaVersion>1.8</javaVersion>
    <maven.compiler.source>${java.version}</maven.compiler.source>
    <maven.compiler.target>${java.version}</maven.compiler.target>
</properties>

...

Exatamente. ${java.version}é nunca mais vai resolver para o alojamento (completamente diferente) javaVersione Eclipse ignorado a propriedade e usado o padrão.

O que me traz de volta à parte " por qualquer razão " com que abri; a estupidez do desenvolvedor pode ser um desses motivos.

David Avendasora
fonte
1
Como alterar org.eclipse.jdt.launching.JRE_CONTAINER / org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType / J2SE-1.5
aName
Downvoting por dizer "estupidez do desenvolvedor pode ser uma dessas razões".
Luke Hutchison
No meu caso, estou usando Maven / Tycho para construir plug-ins Eclipse e o padrão acima foi derivado do ambiente de execução especificado no arquivo MANIFEST.MF. Alterar o ambiente de execução para JavaSE-1.8 corrigiu o problema.
mat101
3

Adicione essas linhas ao seu pom.xml e, em seguida, clique com o botão direito do mouse em Biblioteca do sistema JRE -> Propriedades -> Defina seu ambiente de execução correto para Java 1.8 ou versão que você deseja definir.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.2</version> <!-- or whatever current version -->
    <configuration>
      <source>1.8</source>
      <target>1.8</target>
    </configuration>
  </plugin> 
Avinav Mishra
fonte
Sua resposta está faltando <build> <plugins> ... sua resposta aqui ... </plugins> </build> que a torna uma resposta mais clara para as pessoas.
Kyle Bridenstine,
1

Eu tive esse problema. No meu caso, a tag <properties> e as tags aninhadas que Jorge Campos mencionou acima estavam no lugar errado. Se eu colocá-los entre as marcas <hostversion> e <dependencies> no arquivo pom.xml, esse comportamento será interrompido.

Isso pode ser obtido no Eclipse se a validação desses arquivos estiver ativada.

nsandersen
fonte
1

Encontro um problema semelhante em uma das máquinas do meu companheiro de equipe. Ele estava usando uma versão antiga do Eclipse, acredito que ele estava usando Keppler. O projeto após ser atualizado muda a versão do JRE para 1.5.

Atualizar o Eclipse para a versão mais recente resolve este problema.

user902383
fonte
É, não. Estou executando o Neon, minhas configurações de espaço de trabalho são 1.8, mas quando eu importo (ou atualizo) um projeto Maven, o Eclipse insiste em usar J2SE-1.5.
Antares42 de
@ Antares42 você consegue construir a partir da linha de comando sem problemas? Qual versão m2e você está usando?
user902383 de
1
Posso construir usando a linha de comando (ou melhor, "Executar como -> construir Maven ...") sem problemas. Mas assim que faço "Maven -> Atualizar projeto", recebo as bibliotecas JRE conforme mencionado e o Eclipse falha ao construir o projeto. Ainda posso construir usando o Maven. Depois de adicionar uma maven.compiler.sourcepropriedade conforme mencionado na resposta acima, tudo funcionará bem. Minha versão m2e é 1.7.1-20161104-1805.
Antares42 de
1

No meu caso (antigo JBoss Developer Studio), o problema era que os ambientes JRE não incluíam 1.8 (apenas 1.7). Quando mudei a maven-compiler-pluginversão para 1.7 e fiz o projeto de atualização do maven, ele atualizou a biblioteca do sistema Eclipse JRE para 1.7. insira a descrição da imagem aqui

Portanto, a solução é obter uma versão IDE mais recente que inclua um ambiente JRE integrado 1.8 ou posterior, ou tentar instalá-lo manualmente (consulte https://stackoverflow.com/a/35204314 )

codificador cego 9734
fonte
0

Eu me permito atualizar esse assunto com o Java 11.

Instalei o OpenJDK11 em meu computador e queria usá-lo em um aplicativo.

Tive problemas porque o Eclipse sempre mudava meu JRE para JavaSE-1.5 quando atualizava meu projeto com o Maven.

Eu tinha configurado tudo como você disse, mas sempre selecionava diretamente no meu Java Build Path "java-11-openjdk.x86_64" como um dos meus Alternante JRE. Resolvi meu problema selecionando em "Ambiente de execução" JavaSE-10 (mas é necessário clicar duas vezes nele e escolher como JRE compatível sua versão do OpenJDK11) conforme mostrado na imagem. Configuração do ambiente de execução

O projeto usará Java 11 graças a isso (imagem), mas você tem que escrever 10 para a versão java no pom.xml e também definir java 10 nas facetas do projeto.

Claeyssic
fonte
0

Resolvi o problema ao instalar a atualização do eclipse "JAVA 12" do mercado. Isso faz meu eclipse passar de Kepler para Luna.

Depois disso, consegui definir o 1.8 como JDK padrão, corrigindo o problema da "atualização do maven".

Andrea La Rosa
fonte
-3

Mudei o Eclipse de kepler para neon e atualizei meu projeto com Maven -> Atualizar projeto.

puja
fonte