IntelliJ IDEA 13 verwendet Java 1.5, obwohl es auf 1.7 eingestellt ist

147

Trotz der Angabe von JDK 1.7 in allen Projekteinstellungen (einschließlich in File -> Project Structure -> Project :: Project SDK) tritt der folgende Fehler auf, IntelliJ 13wenn versucht wird, einfachen Java 7-Code zu kompilieren, der den Diamantoperator verwendet:

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

Gibt es eine andere Stelle in der Konfiguration, an der die erwartete -source 7Option aktiviert werden sollte?

PNS
quelle
8
Versucht Sie: File -> Project Structure -> Project :: Project language levelwechseln zu Diamonds, ARM, multi-catch etc?
Adam Shakhabov
39
Ja. Wie sich herausstellt, gibt es unter Datei -> Projektstruktur -> Module :: Quellen (neben Pfade und Abhängigkeiten) noch eine weitere Option, die über die Option "Sprachniveau" verfügt, die ebenfalls korrekt eingestellt werden muss. Vielen Dank an alle für die Kommentare und die Antworten! :-)
PNS
33
Es gibt 3 Stellen, die aktualisiert werden müssen. (1) Datei -> Einstellungen (Strg + Alt + s für die Verknüpfung), dann "Erstellen, Ausführen, Bereitstellen"> Compiler> Java-Compiler und ändern Sie die "Ziel-Bytecode-Version" in die gewünschte Java-Version. (2 und 3) Die andere Stelle befindet sich unter Datei> Projektstruktur (Strg + Alt + Umschalt + S)> "Projekteinstellungen"> "Projekt". Ändern Sie das Projekt-SDK so, dass es auf die entsprechende Java-Version verweist, und stellen Sie die Projektsprachenstufe auf ein die richtige Version. Der Code-Assistent ändert nur das Sprachniveau für Sie, was für neue Projekte leider ärgerlich ist.
8bitme
2
Was ist, wenn ich 200 Module in meinem Projekt habe, muss ich den ganzen Tag damit verbringen, sie erneut anzuklicken?

Antworten:

114

Wenn nichts davon hilft (mein Fall), können Sie es in Ihrer pom.xml wie folgt einstellen:

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

Wie dieser coole Typ hier erwähnte: https://stackoverflow.com/a/25888116/1643465

Djordje Ivanovic
quelle
4
Gute Idee, aber verpflichten Sie sich nicht, ein gemeinsames Projekt zu überschreiben, es sei denn, Sie möchten alle Einstellungen Ihrer Teamkollegen in die Luft
jagen
8
Dies löste das Problem für mich, danke! Wie kann es "die Einstellungen der Teamkollegen sprengen"? Wenn das Projektziel 1,7 ist, ist es 1,7. Es ist nicht so, dass jeder Teamkollege eine andere Zielumgebung hat.
Isapir
1
Großartig, meins ist ein Maven-Projekt.
Huuthang
1
Für neue Maven-Projekte kann diese Einstellung in Standard-Maven-Projekten hinzugefügt werden. Verwenden Sie Einstellungen | Editor | Datei- und Codevorlagen | Maven | Maven Projects.xml <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> InteliJ Support Forum
pRmdk
Das hat bei mir funktioniert. Aber erst als ich IntelliJ neu startete, habe ich versucht, das Projekt alleine neu zu erstellen, und das hat nicht funktioniert.
Metin Dagcilar
155

Bitte überprüfen Sie die Sprachniveaus Ihres Projekts / Moduls (Projektstruktur | Projekt; Projektstruktur | Module | Modulname | Quellen). Vielleicht möchten Sie auch einen Blick auf Einstellungen | werfen Compiler | Java Compiler | Bytecode-Version pro Modul.

Stellen Sie auch Folgendes ein:

Datei -> Projektstruktur -> Module :: Quellen (neben Pfade und Abhängigkeiten) und das hat eine Option "Sprachstufe", die ebenfalls korrekt eingestellt werden muss.

Peter Gromov
quelle
2
Und überprüfen Sie, ob Additional command line parametersin Java CompilerEinstellungen leer ist .
NeplatnyUdaj
2
Hinweis: Die dritte Sache (Datei -> Projektstruktur -> Module :: Quellen) hat es für mich gelöst.
Peter
Hilfreiche Screenshots dieses Prozesses finden Sie unter dieser Antwort: stackoverflow.com/a/21747329/1146608
Patrick M
1
Wenn Sie Maven verwenden, müssen Sie pom ändern: stackoverflow.com/questions/27037657/…
Benj
11
+1 für Sprachniveau. Es sollte nicht SO VIELE Orte geben, an denen man dasselbe # $% ^ -Ding einstellen und zurücksetzen und zurücksetzen kann!
G. Ann - SonarSource Team
52

[Für IntelliJ IDEA 2016.2]

Ich möchte einen Teil von Peter Gromovs Antwort mit einem aktuellen Screenshot erweitern. Speziell dieser spezielle Teil:

Vielleicht möchten Sie auch einen Blick auf Einstellungen | werfen Compiler | Java Compiler | Bytecode-Version pro Modul.

Ich glaube, dass (zumindest in 2016.2): ​​Durch Auschecken verschiedener Commits werden gitdiese auf 1,5 zurückgesetzt.

Bytecode-Version pro Modul

Birchlabs
quelle
5
Ich habe es aufgegeben, diese auf ihren korrekten Zahlen zu halten (aus irgendeinem Grund ändern sie sich - ich nehme an, wenn ich das tue git checkout). Ich habe festgestellt, dass ich Einträge in dieser Liste sicher löschen konnte. Das Modul greift auf die Verwendung der "Projektbytecode-Version" zurück.
Birchlabs
Diese Zahlen fallen für mich auch unerwartet auf 1,5 zurück. Nur die Hardcodierung der Compiler-Quell- und Zielversionen in der Datei pom.xml funktioniert konsistent.
Sheldonkreger
Beachten Sie die Einstellung "Projekt-Bytecode-Version" oben in diesem Screenshot sowie die hervorgehobene "Ziel-Bytecode-Version".
Basil Bourque
@Birchlabs Danke, ich denke das ist die richtige Antwort.
Chrips
1
Dies war die einzige Lösung, die das Problem für mich behoben hat, IntelliJ IDEA 2019.1
João Rocha da Silva
19

Alternativ können Sie das Maven-Compiler-Plugin mit der entsprechenden Java-Version anwenden, indem Sie dies zu Ihrer pom.xml hinzufügen:

<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>
OlgaMaciaszek
quelle
Dies funktionierte nach dem Beenden des Projekts und löschte den .idea-Ordner und die .iml-Datei, die alle beim erneuten Öffnen des Projekts neu erstellt wurden.
Andrew
1
Das Drücken der Schaltfläche "Maven aktualisieren" in der Idee sollte funktionieren.
OlgaMaciaszek
Die Aktualisierung von @OlgaMaciaszek war erforderlich, damit die Lösung funktioniert. Vielen Dank!
Payne
14

Ich habe versucht, Änderungen an Intellij IDEA wie folgt vorzunehmen:

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

aber nichts hat funktioniert, es hat die Versionen auf Java 1.5 zurückgesetzt, sobald ich es gespeichert habe.

Das Hinzufügen der folgenden Zeilen zu root (Projektebene) pom.xml hat mir jedoch geholfen, das obige Problem zu beheben: (beide Optionen haben bei mir funktioniert)

Option 1:

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

Option 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>
Amit Kaneria
quelle
10

Datei-> Projektstruktur-> Projekteinstellungen-> Projekt-> Projektsprachenstufe

Datei-> Projektstruktur-> Projekteinstellungen-> Module-> Sprachniveau

Ändern Sie die Ebene mithilfe der Dropdown-Liste

Ketankk
quelle
4

Gehen Sie in Ihrer Befehlszeile (Unix-Terminal) zu Ihrem Projektstammordner und führen Sie dies aus

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

Dadurch wird die Sprachebeneneigenschaft in allen IML-Dateien Ihres Projekts von Java 1.5 auf Java 1.8 geändert.

Saideep Sambaraju
quelle
Ich compiler.xmlbin mir noch nicht sicher, aber Sie müssen möglicherweise auch die JDK-Version im Stammverzeichnis des Projekts ersetzen (IntelliJ 2017.2):sed 's/target="1.5"/target="1.8"/g' .idea/compiler.xml
Oleksandr Volynets
compiler.xml kann für Ihr Projekt spezifisch sein. Dieser Befehl zielt nur auf * .iml-Dateien ab, die nur von Intellij benötigt werden. Möglicherweise müssen Sie die Spracheinstellungen in Ihrer maven pom.xml oder in Ihrem Fall in der compiler.xml unabhängig von der IDE anpassen.
Saideep Sambaraju
1
@SaideepSambaraju compiler.xml ist in jedem baubaren Ideenprojekt vorhanden, das ich gesehen habe. Soweit ich weiß, ist diese Datei das Modell der Einstellungen-> Compiler (Linux) -Einstellungen-> Compiler (MacOS). Sie können es verwenden, um die Zielversion per Skript zu ändern, wie Oleksandr sagte, oder von Hand ohne Benutzeroberfläche.
Sergey Sargsyan
@SergeySargsyan - Ich habe es gerade überprüft. Es befindet sich im Ordner .idea, den ich bei der Suche nicht finden konnte. Vielen Dank für den Hinweis.
Saideep Sambaraju
2

Zunächst müssen Sie unter „Projekt - Bytecode - Version“ ändern File > Settings,Compiler > Java Compiler

Zweitens machen Sie einen vollständigen Wiederaufbau.

Elliott Frisch
quelle
2

Ich habe das gleiche Problem, aber mit einer anderen Situation. Ich kann ohne Probleme mit maven in der Kommandozeile ( mvn clean install) kompilieren , aber in Intellij habe ich immer"java: diamond operator is not supported in -source 1.5" kompilieren Kompilierungsfehler erhalten, obwohl ich das maven-compiler-plugin mit java 1.8 in der pom.xml gesetzt habe.

Es stellte sich heraus, dass ich in der settings.xml meines Maven eine Remote-Repository-Einstellung habe, von der das Projekt abhängt, aber Intellij verwendet seinen eigenen Maven, der nicht die gleiche Einstellung wie mein lokaler Maven hat.

Meine Lösung bestand also darin, die Maven-Einstellung ( Settings -> Build, execution, Deployment -> Maven -> Maven home directory) des Intellij so zu ändern , dass der lokale Maven verwendet wird.

jordom
quelle
2

In IntelliJ Community Edition 2019.02 hat das Ändern der folgenden Einstellungen für mich funktioniert

  1. Aktualisieren Sie Datei-> Projektstruktur-> Projekteinstellungen-> Projekt-> Projektsprachenstufe auf Java 11 (Aktualisierung auf die Java-Version, die Sie in Ihrem Projekt verwenden möchten) mithilfe der Dropdown-Liste.

  2. Datei aktualisieren-> Projektstruktur-> Projekteinstellungen-> Module-> Sprachniveau

  3. Aktualisieren Sie Datei-> Einstellungen-> Erstellen, Ausführen, Bereitstellen -> Compiler -> Java-Compiler-> Projekt-ByteCode-Version auf Java 11.

  4. Aktualisieren Sie die Zielversion für alle Einträge unter Datei-> Einstellungen-> Erstellen, Ausführen, Bereitstellen -> Compiler -> Java-Compiler-> Bytecode-Version pro Modul.

Khyati Elhance
quelle
0

In IntelliJ 2017 arbeitete die folgende Immobilie für mich

  <properties>
        <java.version>1.8</java.version>       
  </properties>
H. Rabiee
quelle
Dies funktioniert nur, wenn Sie ein übergeordnetes Projekt wie Spring Boot verwenden.
wggn
0

Eine weitere Sache, die dies verursachen könnte, ist falsch versionvon der<parent> Projekt nicht .

In meinem Fall zeigte es auf ein nicht vorhandenes Projekt und aus irgendeinem Grund stufte IntelliJ die Version in den Einstellungen auf 1.5 herab und später, als ich es reparierte, interpretierte es die Zielcodeversion immer noch als 5 (obwohl es auf 11 gesetzt wurde).

Syntagma
quelle