IntelliJ IDEA 13 utilizza Java 1.5 nonostante l'impostazione su 1.7


147

Nonostante abbia specificato JDK 1.7 in tutte le impostazioni del progetto (incluso in File -> Project Structure -> Project :: Project SDK), il seguente errore viene prodotto IntelliJ 13quando si tenta di compilare un semplice codice Java 7 che utilizza l'operatore diamante:

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

C'è qualche altro posto nella configurazione in cui l' -source 7opzione prevista dovrebbe essere abilitata?


8
Ti ho provato: File -> Project Structure -> Project :: Project language levelpassare a Diamonds, ARM, multi-catch etc?
Adam Shakhabov,

39
Sì. A quanto pare, c'è ancora un'altra opzione in File -> Struttura del progetto -> Moduli :: Sorgenti (accanto a Percorsi e dipendenze) e che ha un'opzione "Livello lingua" che deve anche essere impostata correttamente. Grazie a tutti ragazzi per i commenti e le risposte! :-)
PNS


33
Ci sono 3 posti che devono essere aggiornati. (1) File -> Impostazioni (Ctrl + alt + s per il collegamento) quindi "Build, Execution, Deployment"> Compiler> Java Compiler e modifica "Target bytecode version" nella versione Java desiderata. (2 e 3) L'altra posizione si trova in File> Struttura del progetto (Ctrl + Alt + Maiusc + S)> "Impostazioni progetto"> "Progetto" cambia l'SDK del progetto in modo che punti alla versione appropriata di Java e imposta il livello della lingua del progetto su la versione corretta. Il codice assist cambia solo il livello della lingua per te purtroppo rendendolo un fastidio per i nuovi progetti.
bit

2
E se avessi 200 moduli nel mio progetto, dovrei passare tutto il giorno a riclicarli?

Risposte:


114

Se nulla di tutto ciò aiuta (il mio caso), puoi impostarlo nel tuo pom.xml, in questo modo:

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

Come questo bravo ragazzo ha menzionato qui: https://stackoverflow.com/a/25888116/1643465


4
buona idea, ma non impegnare le tue forzature per un progetto condiviso a meno che tu non voglia cancellare tutte le impostazioni dei tuoi compagni di squadra
pittoresca

8
Questo ha risolto il problema per me, grazie! Come può "far saltare le impostazioni dei compagni di squadra"? Se l'obiettivo del progetto è 1,7, allora è 1,7. Non è come se ogni compagno di squadra avesse un ambiente target diverso.
Isapir,

1
Ottimo, il mio è un progetto maven.
huuthang,

1
Per i nuovi progetti Maven è possibile aggiungere questa impostazione nei progetti Maven predefiniti. Usa preferenze | Editor | Modelli di file e codici | Maven | <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> Forum di supporto InteliJ di
pRmdk,

Questo ha funzionato per me. Ma solo quando ho riavviato IntelliJ, ho provato a ricostruire il progetto da solo e non ha funzionato.
Metin Dagcilar,

155

Controlla i livelli di lingua del tuo progetto / modulo (Struttura del progetto | Progetto; Struttura del progetto | Moduli | nome-modulo | Fonti). Potresti anche dare un'occhiata a Impostazioni | Compilatore | Compilatore Java | Versione bytecode per modulo.

Imposta anche questo:

File -> Struttura del progetto -> Moduli :: Sorgenti (accanto a Percorsi e dipendenze) e che ha un'opzione "Livello lingua" che deve anche essere impostata correttamente.


2
E controlla se Additional command line parametersnelle Java Compilerimpostazioni è vuoto.
NeplatnyUdaj

2
Nota: la terza cosa (File -> Struttura del progetto -> Moduli :: Fonti) è ciò che ha risolto per me.
Peter,

Schermate utili di questo processo sopra a questa risposta: stackoverflow.com/a/21747329/1146608
Patrick M

1
Se si utilizza Maven, è necessario modificare pom: stackoverflow.com/questions/27037657/…
Benj

11
+1 per livello di lingua. Non ci dovrebbero essere MOLTI posti in cui impostare e reimpostare e reimpostare la stessa cosa # $% ^!
G. Ann - SonarSource Team,

52

[Per IntelliJ IDEA 2016.2]

Vorrei ampliare parte della risposta di Peter Gromov con uno screenshot aggiornato. Nello specifico questa parte particolare:

Potresti anche dare un'occhiata a Impostazioni | Compilatore | Compilatore Java | Versione bytecode per modulo.

Credo che (almeno nel 2016.2): ​​la verifica di diversi commit li gitreimposta su 1,5.

Versione bytecode per modulo


5
Ho rinunciato a mantenerli al loro numero corretto (per qualche ragione cambiano - presumo quando lo faccio git checkout). Ho scoperto che sono stato in grado di eliminare in sicurezza le voci in questo elenco; il modulo ricorre all'utilizzo di "Versione bytecode progetto".
Birchlabs,

Questi numeri tornano a 1,5 inaspettatamente per me. Solo la codifica effettiva dell'origine del compilatore e delle versioni di destinazione nel file pom.xml funziona in modo coerente.
sheldonkreger,

Nota l'impostazione "Versione bytecode progetto" nella parte superiore di questa schermata, nonché la "Versione bytecode di destinazione" evidenziata.
Basil Bourque,

@Birchlabs Grazie, penso che questa sia la risposta giusta.
Chrips

1
Questa è stata l'unica soluzione che ha risolto il problema per me, IntelliJ IDEA 2019.1
João Rocha da Silva

19

In alternativa, puoi applicare maven-compilatore-plugin con la versione java appropriata aggiungendo questo al tuo 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>

Ciò ha funzionato dopo essere uscito dal progetto eliminando la cartella .idea e il file .iml che vengono ricreati quando si riapre il progetto.
Andrew,

1
Premendo il pulsante "aggiorna Maven" nell'idea dovrebbe funzionare.
OlgaMaciaszek,

È stato richiesto l'aggiornamento di @OlgaMaciaszek affinché la soluzione funzionasse. Grazie!
Payne,

14

Ho provato ad apportare modifiche a Intellij IDEA come di seguito:

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

ma non ha funzionato, ha ripristinato le versioni in Java 1.5 non appena l'ho salvato.

Tuttavia, l'aggiunta di righe di seguito a root (a livello di progetto) pom.xml mi ha aiutato a risolvere il problema precedente: (entrambe le opzioni hanno funzionato per me)

Opzione 1:

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

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

11

File-> Struttura del progetto-> Impostazioni del progetto-> Progetto-> Livello della lingua del progetto

File-> Struttura del progetto-> Impostazioni del progetto-> Moduli-> Livello della lingua

Cambia livello usando il menu a discesa


4

Nella riga di comando (terminale Unix) Vai alla cartella principale del tuo progetto e fai questo

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

Ciò modificherà la proprietà a livello di lingua in tutti i file .iml del progetto da Java 1.5 a Java 1.8.


Non sono ancora sicuro, ma potrebbe essere necessario sostituire anche la versione JDK nella compiler.xmlradice del progetto (IntelliJ 2017.2):sed 's/target="1.5"/target="1.8"/g' .idea/compiler.xml
Oleksandr Volynets,

compiler.xml potrebbe essere specifico per il tuo progetto. Questo comando ha come target solo i file * .iml necessari solo a intellij. Potrebbe essere necessario regolare le impostazioni della lingua in maven pom.xml o nel tuo caso compiler.xml indipendentemente dall'IDE.
Saideep Sambaraju,

1
@SaideepSambaraju compiler.xml è presente in qualsiasi progetto di idea costruibile che ho visto. Da quello che vedo, questo file è il modello delle Impostazioni-> compilatore (linux) Preferenze-> Compilatore (MacOS). Puoi usarlo per cambiare la versione di destinazione tramite script come ha detto Oleksandr o manualmente senza interfaccia utente.
Sergey Sargsyan,

@SergeySargsyan - L'ho appena controllato, è nella cartella .idea che non sono riuscito a trovare cercando. Grazie per segnalarlo.
Saideep Sambaraju,

2

Innanzitutto, è necessario modificare la "versione del bytecode del progetto" in File > Settings,Compiler > Java Compiler

Secondo, fai una ricostruzione completa.


2

Ho lo stesso problema ma con una situazione diversa. Posso compilare senza problemi con maven nella riga di comando ( mvn clean install), ma in Intellij ho sempre avuto "java: diamond operator is not supported in -source 1.5"errori di compilazione nonostante abbia impostato il plugin maven-compilatore con java 1.8 in pom.xml.

Si è scoperto che ho un'impostazione di repository remota in settings.xml di mia maven da cui dipende il progetto, ma Intellij usa la sua maven che non ha la stessa impostazione con la mia maven locale.

Quindi la mia soluzione è stata quella di cambiare l'impostazione della cottura di Intellij ( Settings -> Build, execution, Deployment -> Maven -> Maven home directory) per usare la cottura locale.


2

In IntelliJ Community Edition 2019.02, la modifica delle seguenti impostazioni ha funzionato per me

  1. Aggiorna file-> Struttura del progetto-> Impostazioni del progetto-> Progetto-> Livello del linguaggio del progetto a Java 11 (aggiorna alla versione java che desideri utilizzare nel tuo progetto) usando il menu a discesa.

  2. Aggiorna file-> Struttura progetto-> Impostazioni progetto-> Moduli-> Livello lingua

  3. Aggiorna file-> Impostazioni-> Build, Execution, Deployment -> Compiler -> Java Compiler-> Project ByteCode Version to java 11.

  4. Aggiorna la versione di destinazione per tutte le voci in File-> Impostazioni-> Build, Execution, Deployment -> Compiler -> Java Compiler-> Per modulo Codice byte Versione.


0

Ho avuto la seguente proprietà lavorando per me in IntelliJ 2017

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

Funziona solo se usi un progetto genitore come quello di Spring Boot.
wggn,

0

Un'altra cosa che potrebbe causare questo è avere errato versiondel <parent>progetto.

Nel mio caso puntava a un progetto inesistente e per qualche ragione IntelliJ ha declassato la versione con le impostazioni a 1.5 e successive quando l'ho riparata, interpretava ancora la versione del codice target come 5 (nonostante fosse impostata su 11).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.