O IntelliJ IDEA 13 usa Java 1.5, apesar de ter definido para 1,7


147

Apesar de especificar o JDK 1.7 em todas as configurações do projeto (inclusive em File -> Project Structure -> Project :: Project SDK), o seguinte erro é produzido IntelliJ 13ao tentar compilar algum código Java 7 simples que usa o operador diamond:

java: diamond operator is not supported in -source 1.5
(use -source 7 or higher to enable diamond operator)

Existe algum outro lugar na configuração em que a -source 7opção esperada deve ser ativada?


8
Tentei: File -> Project Structure -> Project :: Project language levelmudar para Diamonds, ARM, multi-catch etc?
Adam Shakhabov

39
Sim. Como se vê, existe ainda outra opção em Arquivo -> Estrutura do projeto -> Módulos :: Fontes (ao lado de Caminhos e dependências) e que possui uma opção "Nível de idioma" que também precisa ser definida corretamente. Obrigado a todos pelos comentários e respostas! :-)
PNS


33
Existem 3 locais que precisam ser atualizados. (1) Arquivo -> Configurações (Ctrl + alt + s para o atalho), depois "Build, Execution, Deployment"> Compiler> Java Compiler e altere a "Target bytecode version" para a versão Java desejada. (2 e 3) O outro local está em Arquivo> Estrutura do projeto (Ctrl + Alt + Shift + S)> "Configurações do projeto"> "Projeto" altere o SDK do projeto para apontar para a versão apropriada do Java e defina o nível de idioma do projeto como a versão correta. O assistente de código altera apenas o nível do idioma para você, infelizmente, tornando isso um aborrecimento para novos projetos.
8bitme

2
E se eu tiver 200 módulos no meu projeto, tenho que passar o dia todo reclocando-os?

Respostas:


114

Se nada disso ajudar (no meu caso), você pode configurá-lo no seu pom.xml, assim:

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

Como esse cara legal mencionado aqui: https://stackoverflow.com/a/25888116/1643465


4
boa idéia, mas não comprometer suas substituições difíceis de um projeto compartilhado, a menos que você quer apagar as configurações de todos os seus companheiros de equipe
quaintm

8
Isso resolveu o problema para mim, obrigado! Como ele pode "explodir as configurações dos companheiros de equipe"? Se o objetivo do projeto é 1,7, então é 1,7. Não é como se cada colega de equipe tivesse um ambiente-alvo diferente.
Isapir 28/08/16

1
Ótimo, o meu é um projeto maven.
precisa saber é o seguinte

1
Para novos projetos maven, essa configuração pode ser adicionada nos projetos padrão maven. Use Preferências | Editor Modelos de arquivo e código | Maven Maven Projects.xml <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> Fórum de suporte InteliJ
pRmdk

Isso funcionou para mim. Mas somente quando reiniciei o IntelliJ, tentei apenas reconstruir o projeto sozinho e isso não funcionou.
Metin Dagcilar

155

Verifique os níveis de idioma do seu projeto / módulo (Estrutura do projeto | Projeto; Estrutura do projeto | Módulos | nome do módulo | Fontes). Você também pode querer dar uma olhada em Configurações | Compilador Compilador Java | Versão de bytecode por módulo.

Defina também este:

Arquivo -> Estrutura do projeto -> Módulos :: Fontes (ao lado de Caminhos e dependências) e que possui uma opção "Nível de idioma" que também precisa ser definida corretamente.


2
E verifique se Additional command line parametersem Java Compilerconfigurações está em branco.
precisa saber é o seguinte

2
Nota: A terceira coisa (Arquivo -> Estrutura do projeto -> Módulos :: Fontes) é o que resolveu isso para mim.
Peter

Capturas de tela úteis deste processo nesta resposta: stackoverflow.com/a/21747329/1146608 #
Patrick M

1
Se estiver usando Maven, precisa modificar pom: stackoverflow.com/questions/27037657/...
Benj

11
+1 para o nível do idioma. Não deve haver MUITOS lugares para definir e redefinir e redefinir a mesma coisa # $% ^!
G. Ann - Equipe SonarSource

52

[Para IntelliJ IDEA 2016.2]

Gostaria de expandir parte da resposta de Peter Gromov com uma captura de tela atualizada. Especificamente esta parte específica:

Você também pode querer dar uma olhada em Configurações | Compilador Compilador Java | Versão de bytecode por módulo.

Acredito que (pelo menos em 2016.2): ​​verificar diferentes commits em gitredefine-os para 1,5.

Versão de bytecode por módulo


5
Desisti de mantê-los nos números corretos (por alguma razão eles mudam - presumo que sim git checkout). Eu descobri que era capaz de excluir com segurança as entradas desta lista; o módulo volta a usar "Versão do bytecode do projeto".
precisa saber é o seguinte

Esses números também voltam a 1,5 para mim inesperadamente. Somente a codificação embutida das versões de origem e destino do compilador no arquivo pom.xml funciona de maneira consistente.
Sheldonkreger 25/05

Observe a configuração "Versão do bytecode do projeto" na parte superior desta captura de tela, bem como a "Versão do bytecode de destino" destacada.
Basil Bourque

@ Birchlabs Obrigado, acho que esta é a resposta certa.
chrips

1
Esta foi a única solução que corrigiu o problema para mim, o IntelliJ IDEA 2019.1
João Rocha da Silva

19

Como alternativa, você pode aplicar o maven-compiler-plugin com a versão java apropriada, adicionando-o ao seu pom.xml:

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

Isso funcionou após a saída do projeto, excluindo a pasta .idea e o arquivo .iml, todos recriados ao abrir o projeto novamente.
Andrew

1
Pressionar o botão "Atualizar Maven" na idéia deve funcionar.
OlgaMaciaszek

A atualização do @OlgaMaciaszek foi necessária para que a solução funcionasse. Obrigado!
Payne

14

Tentei fazer alterações no Intellij IDEA como abaixo:

1

File >> Settings >> Build, Execution, Deployment >> Compiler >> Java Compiler >> project bytecode version: 1.8 >> Per-module bytecode version: 1.8

2)

File >> Project Structure >> Project Settings >> Project >> SDK : 1.8, Project Language : 8 - Lambdas
File >> Project Structure >> Project Settings >> Modules >> abc : Language level: 8 - Lambdas

mas nada funcionou, ele reverteu as versões para o java 1.5 assim que eu o salvei.

No entanto, adicionar linhas abaixo à raiz (nível do projeto) pom.xml me ajudou a resolver o problema acima: (ambas as opções funcionaram para mim)

Opção 1:

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

Opção 2:

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

10

Arquivo-> Estrutura do Projeto-> Configurações do Projeto-> Projeto-> Nível do Idioma do Projeto

Arquivo-> Estrutura do Projeto-> Configurações do Projeto-> Módulos-> Nível do Idioma

Alterar nível usando o menu suspenso


4

Na sua linha de comando (terminal Unix) Vá para a pasta raiz do projeto e faça isso

find . -type f -name '*.iml' -exec sed -i '' s/JDK_1_5/JDK_1_8/g {} +

Isso mudará a propriedade no nível do idioma em todos os arquivos .iml do seu projeto, de java 1.5 para java 1.8.


Ainda não tenho certeza, mas pode ser necessário substituir também a versão do JDK na compiler.xmlraiz do projeto (IntelliJ 2017.2):sed 's/target="1.5"/target="1.8"/g' .idea/compiler.xml
Oleksandr Volynets

O compiler.xml pode ser específico para o seu projeto. Este comando tem como alvo apenas arquivos * .iml que são necessários apenas por intellij. Pode ser necessário ajustar as configurações de idioma no seu maven pom.xml ou no seu caso, compiler.xml, independentemente do IDE.
Saideep Sambaraju

1
O @SaideepSambaraju compiler.xml está presente em qualquer projeto de ideia que possa ser construído. Pelo que vejo, esse arquivo é o modelo das configurações-> compilador (linux) Preferências-> compilador (MacOS). Você pode usá-lo para alterar a versão de destino por script, como Oleksandr disse ou manualmente, sem interface do usuário.
Sergey Sargsyan

@SergeySargsyan - Acabei de verificar, está na pasta .idea que não consegui encontrar pesquisando. Obrigado por apontar isso.
Saideep Sambaraju

2

Primeiro, você precisa alterar a "versão do bytecode do projeto" em File > Settings,Compiler > Java Compiler

Segundo, faça uma reconstrução completa.


2

Eu tenho o mesmo problema, mas com situação diferente. Posso compilar sem problemas com o maven na linha de comando ( mvn clean install), mas no Intellij sempre recebi um "java: diamond operator is not supported in -source 1.5"erro de compilação, apesar de ter definido o maven-compiler-plugin com o java 1.8 no pom.xml.

Acontece que eu tenho uma configuração de repositório remoto no settings.xml do meu maven, do qual o projeto depende, mas Intellij usa seu próprio maven, que não tem a mesma configuração do maven local.

Portanto, minha solução foi alterar a configuração do maven do Intellij ( Settings -> Build, execution, Deployment -> Maven -> Maven home directory) para usar o maven local.


2

No IntelliJ Community Edition 2019.02, a alteração das seguintes configurações funcionou para mim

  1. Atualize Arquivo-> Estrutura do projeto-> Configurações do projeto-> Projeto-> Nível da linguagem do projeto para Java 11 (atualize para a versão java que você deseja usar no seu projeto) usando o menu suspenso.

  2. Atualizar Arquivo-> Estrutura do Projeto-> Configurações do Projeto-> Módulos-> Nível do Idioma

  3. Atualize Arquivo-> Configurações-> Compilação, Execução, Implantação -> Compilador -> Compilador Java-> Versão do ByteCode do Projeto para java 11.

  4. Atualize a versão de destino para todas as entradas em Arquivo-> Configurações-> Compilar, Execução, Implantação -> Compilador -> Compilador Java-> Por módulo Versão do código de bytes.


0

Eu tinha a seguinte propriedade trabalhando para mim no IntelliJ 2017

  <properties>
        <java.version>1.8</java.version>       
  </properties>

Isso só funciona se você usar um projeto pai como o de inicialização por primavera.
wggn

0

Mais uma coisa que pode causar isso é ter incorreto versionno <parent>projeto.

No meu caso, ele estava apontando para um projeto inexistente e, por algum motivo, o IntelliJ rebaixou a versão nas configurações para 1.5 e mais tarde, quando eu o corrigi, ainda estava interpretando a versão do código de destino como 5 (apesar de defini-la como 11).

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.