IDEA: javac: release de origem 1.7 requer release de destino 1.7

474

Ao executar um teste JUnit, usando o IntelliJ IDEA, recebo

insira a descrição da imagem aqui

Como posso corrigir isso?

  • Usando o SDK 1.7
  • O nível do idioma do módulo é 1,7

Maven build funciona bem. (É por isso que acredito nisso na questão de configuração do IDEA)

James Raitsev
fonte

Respostas:

689

Provavelmente você tem opções de compilador incorretas importadas do Maven aqui:

opções do compilador

Verifique também as configurações da versão do bytecode ( destino ) do projeto e do módulo descritas na captura de tela.

Outros locais em que o nível do idioma de origem está configurado:

  • Estrutura do projeto | Projeto

projeto

  • Estrutura do projeto | Módulos (verifique todos os módulos) | Fontes

fontes

O nível de idioma padrão do Maven é 1,5 (5,0). Você verá esta versão como o nível de idioma do módulo na captura de tela acima.

Isso pode ser alterado usando a configuração do maven-compiler-plugin dentro de pom.xml:

<project>
  [...]
  <build>
    [...]
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
    </plugins>
    [...]
  </build>
  [...]
</project>

ou

<project>
  [...]
  <properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>
  [...]
</project>

O IntelliJ IDEA respeitará essa configuração depois de reimportar o projeto Maven na janela da ferramenta Projetos Maven :

reimportar

CrazyCoder
fonte
2
Corrigir. Essa configuração é comum a todos os módulos em um projeto ou é específica para um determinado módulo?
James Raitsev 15/10/12
1
Essa configuração é por projeto, afeta todos os módulos.
22312 CrazyCoder
8
Existe alguma razão pela qual, depois de corrigir isso e aplicar, ele retornaria a algum valor incorreto (através de alterações automáticas ou algo assim)?
Patrick
5
@Patrick, sua pom.xmlconfiguração de plug-in do compilador java pode especificar a versão Java que substituirá essa configuração na próxima vez que você fizer alterações no pom.xml (se a reimportação automática estiver ativada) ou reimportar o projeto manualmente.
precisa saber é o seguinte
1
@CrazyCoder Mudei meu pom.xml depois de alterá-lo uma vez muito antes (estava esperando outras alterações recebidas no pom), de modo que isso soa como uma explicação bastante razoável. Obrigado
Patrick
358

IntelliJ 15, 2016 e 2017

Semelhante ao discutido abaixo para IntelliJ 13 e 14, mas com um nível extra no painel Configurações / Preferências: Configurações > Compilação, Execução, Implantação > Compilador > Compilador Java .

insira a descrição da imagem aqui

IntelliJ 13 & 14

Nos IntelliJ 13 e 14, verifique as Configurações> Compilador> UI do Java Compiler para garantir que você não esteja direcionando uma versão diferente de bytecode em seu módulo.

insira a descrição da imagem aqui

Drew Noakes
fonte
3
Eu tive que excluir meus módulos e deixá-lo de resolução automática (em branco licença por padrão jdk)
Akin Okegbile
3
Funciona para a última Idea14.1
Tushar
Então, qual é a solução aqui?
AlikElzin-kilaka 04/04
@ AlikElzin-kilaka, defina o nível de destino para o que você precisar.
Drew Noakes #
Alguém pode explicar por que eles colocariam configurações específicas do módulo na tela de configuração de preferências globais, não nas configurações do módulo?
MK.
61

No IntelliJ IDEA 14.1 a "versão de bytecode de destino" está em um local diferente.

A seguinte mudança funcionou para mim:

Arquivo> Configurações ...> Compilação, Execução, Implantação> Compilador> Compilador Java : altere a versão de bytecode de destino de 1,5 para 1,8

insira a descrição da imagem aqui

insira a descrição da imagem aqui

ROMANIA_engineer
fonte
ou é melhor deixá-lo em branco, quando puder ser determinado pelo jdk!
Dragonborn
Por que existe uma configuração diferente da do maven?
AlikElzin-Kilaka
42

Você já olhou para a sua configuração de compilação? Se você usar o maven 3 e o JDK 7,

<build>
    <finalName>SpringApp</finalName>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
            </configuration>
        </plugin>
        ...
    </plugins>
    ...
</build>
swissonid
fonte
22

Eu me deparei com isso e a correção era ir para Configurações do projeto> Módulos> clicar no módulo específico> guia Dependências. Percebi que o SDK do módulo ainda estava definido na versão 1.6, mudei para 1.7 e funcionou.

Rob Barreca
fonte
Eu tentei isso ... Acabei tendo que excluir os módulos individuais e deixá-los resolver automaticamente.
Akin Okegbile
14

Encontrei as opções necessárias ('target bytecode version') em settings> compiler> java compiler no meu caso (intelij idea 12.1.3)

eger
fonte
10

Modifique o arquivo de configuração do compilador do projeto no caminho a seguir e altere o 'target' para 1.7:

/project/.idea/compiler.xml

<bytecodeTargetLevel>
  <module name="project-name" target="1.7" />
</bytecodeTargetLevel>
Joe Cheng
fonte
Graças isso funcionou para mim! Não se esqueça de fazer "Faça Módulo '[o seu nome do aplicativo]'" clicando com o botão direito sobre o projeto
Shehaaz
5

Eu o resolvi definindo o campo em branco:

Configurações> Compilador> Java Compiler> Versão do bytecode do projeto

Than IntelliJ usa a versão padrão do JDK.

Robert Moszczynski
fonte
4

De um momento para o outro, também recebi esse erro sem uma razão clara. Alterei todos os tipos de configurações no compilador / módulo etc. Mas, no final, recriei o projeto IntelliJ reimportando o projeto Maven e o problema foi resolvido. Eu penso que isto é um erro.

IntelliJ 12 129.961

pveentjer
fonte
O mesmo aqui para IntelliJ 14.1.2. Reimportou o projeto e foi corrigido.
srikanth
4

Eu atingi isso depois de apenas uma pequena atualização do IntelliJ IDEA 14 para a v14.1. Para mim, alterar uma edição do pom superior / principal ajudou e depois clicou em reimportar o Maven (se não for automático).

Mas talvez seja o suficiente para clicar com o botão direito do mouse no (s) módulo (s) / agregado / módulo pai e no Maven -> Reimportar.

OMax
fonte
isso funcionou para mim! eu fiz isso para o meu módulo de nível superior e os meus módulos de criança
abelnation
2

Eu resolvi o método abaixo

Arquivo >> Estrutura do projeto >> Projeto >> Nível do idioma do projeto -> faça a versão adequada (ex: 1.5)

mati
fonte
1

verifique .idea / misc.xml às vezes você precisa alterar o atributo languageLevel = "JDK_1_X" manualmente

kai
fonte
1

Se for um projeto Gradle, no seu arquivo build.gradle, procure as seguintes configurações:

sourceCompatibility = "xx"
targetCompatibility = "xx"

Para todos os sub-objetos, em seu arquivo build.gradle raiz, você pode colocar:

subprojects { project ->
    sourceCompatibility = "1.7"
    targetCompatibility = "1.7"
}

Embora você possa definir manualmente os níveis de idioma em Idea> Configurações, se for um projeto Gradle, o Idea sincroniza automaticamente os arquivos .iml do módulo nas configurações da Gradle (testadas com o Idea 15+). Portanto, todas as alterações manuais são anuladas quando o gradle é atualizado.

Com base na documentação Gradle , se estes não estiverem configurados, a configuração atual da JVM será usada.

Cagatay Kalan
fonte
1

Eu encontrei outra maneira de encontrar esse erro. Você pode obtê-lo se estiver reorganizando sua estrutura de diretórios e um de seus poms estiver apontando para o pai antigo que não configura mais o javac (porque essa configuração foi movida para um nível intermediário). Se isso acontecer, o nível superior é padronizado para 1,5 e o pom de nível inferior, que se comporta mal, o herda.

Portanto, outra coisa a verificar quando você vê esse erro é que sua estrutura pom está correspondendo corretamente à sua estrutura de diretórios.

Gus
fonte
1

Se a construção do Maven funcionar bem, tente sincronizar a estrutura dos projetos Maven e IntelliJ IDEA.

Na janela da ferramenta Maven , clique no botão Atualizarrefrescar . Ao pressionar esse botão, o IntelliJ IDEA analisa a estrutura do projeto na janela da ferramenta Maven.

Observe que isso pode não ajudar se você estiver usando a compilação EAP, pois o recurso de sincronização do Maven pode estar quebrado algumas vezes.

naXa
fonte
0

Verifique se a depuração correta está selecionada. Arquivo> Estrutura do Projeto

Selecione seu projeto e navegue até a guia Dependências. Selecione a dependência certa no menu suspenso ou crie uma nova.

Viraj Kulkarni
fonte
0

Se todas as soluções anteriores não funcionaram para você (que foi o meu caso), você pode excluir os arquivos de configuração intellij:

  • diretório_do_projeto / .idea / compiler.xml
  • diretório_do_projeto / .idea / encodings.xml
  • diretório do projeto / .idea / misc.xml
  • diretório do projeto / .idea / modules.xml
  • diretório do projeto / .idea / vcs.xml
  • diretório_do_projeto / .idea / workspace.xml
  • etc.

Intellij irá regenerar novos mais tarde. No entanto, tenha cuidado, isso também excluirá toda a configuração intelectual feita no projeto (ou seja: configuração do modo de depuração, ...)

Youness Marhrani
fonte
0

Você precisa alterar a versão do compilador Java na configuração de compilação.

insira a descrição da imagem aqui

Nirbhay Rana
fonte