Fehler: java: javacTask: Quellversion 8 erfordert Zielversion 1.8


889

Mit IntelliJ IDE können keine Projekte kompiliert werden. Screenshots der folgenden Einstellungen:

Gebrauchtes JDK:

http://gyazo.com/b6e32119af7b04090d890cad04db6373

Projekt-SDK und Sprachniveau:

http://gyazo.com/55a5fc9f7f2bb721a04780ce9d74eeab

Sprachniveau:

http://gyazo.com/143bffad63fd89cafc231298729df2fc

Hat jemand irgendwelche Ideen?


1
Das sieht nicht nach einem Fehler von "pure Intellij" aus; Verwenden Sie kein Ameisen-Buildscript oder so?
fge


Antworten:


1911
  1. Datei> Einstellungen> Erstellen, Ausführen, Bereitstellen> Compiler> Java-Compiler
  2. Ändern Sie die Zielbytecode-Version des Moduls, für das Sie arbeiten, in 1.8 .

Wenn Sie Maven verwenden

Fügen Sie das Compiler-Plugin pom.xmlunter dem projectKnoten der obersten Ebene hinzu :

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

(Aus den Kommentaren gehisst.)

Hinweis: Wenn es Ihnen nichts ausmacht, Ihr Projekt erneut zu importieren, müssen Sie nur den POM ändern und das Projekt erneut importieren. IntelliJ übernimmt dann die richtigen Einstellungen und muss diese nicht manuell ändern.


Funktioniert in IntelliJ 14 Ultimate.
DtechNet

Versuchen Sie bei älteren IDEA-Versionen: Einstellungen -> Compiler -> Java-Compiler -> Bytecode-Version pro Modul
Jonik

88
Wenn Sie auf einem Mac arbeiten, finden Sie dies unter Intellij IDEA> Einstellungen ...> Erstellen, Ausführen, Bereitstellen> Java Compiler
JP Armstrong

4
Für Intellij, das neuer als 2016.2 ist, gibt es noch einen Ort, an dem Sie Folgendes überprüfen können : Project Structure -> Project Settings -> Modules -> Denpendencies -> Module SDK.
Bruce Sun

1
Wenn Sie eine POM-Hierarchie mit mehr als zwei Ebenen haben und Ihr Compiler-Plugin im übergeordneten POM definiert ist, erkennt IntelliJ es möglicherweise nicht auf der tiefsten Ebene. Ich sage vielleicht nicht, weil es für einige andere Module auch dann funktioniert, wenn sie das gleiche übergeordnete POM erweitern.
Siebenschläfer

202

Sie müssen zu Einstellungen gehen und unter dem Java-Compiler Folgendes festlegen: Geben Sie hier die Bildbeschreibung ein

Überprüfen Sie auch die Projekteinstellungen


116

Dies scheint die Art von Fehler zu sein, die Maven generiert, wenn Sie das Compiler-Plugin nicht richtig konfiguriert haben. Hier ist ein Beispiel für eine Java 8-Compilerkonfiguration.

<project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<!-- ... -->

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.5.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

<!-- ... -->

</project>

10
Für andere Maven Neulinge wie ich, sollte dies unter sein project, buildund dann plugins.
Darren Hale

4
Auch wenn <source>1.8</source>und <target>1.8</target>konfiguriert ist, kann der obige Fehler auftreten.
BuZZ-dEE

1
Das hat bei mir funktioniert, danke! Das Versions-Tag wurde nicht aufgelöst (ich habe es geändert, um es an meine Version von Maven anzupassen), also habe ich es auskommentiert. Ich glaube, Maven sollte in diesem Fall automatisch die richtige neueste Version abrufen , basierend auf diesem Thread: stackoverflow.com/questions/17239394/… .
Boris

84

Der schnellste Weg, den ich gefunden habe:

  • Drücken Sie: CTRL+ SHIFT+ A(Für Mac + SHIFT+ A)
  • Art: java compiler
  • Drücken Sie: ENTER

Setzen Sie im Fenster Einstellungen den Zielbytecode auf 1,8

(oder 9 für java9)


3
Das hat absolut für mich funktioniert (danke!), Aber ich verstehe nicht, warum dies anders ist als in der pom.xml, den Moduleinstellungen usw.
Adam Lehenbauer

1
Drücken Sie ⌘, um die Einstellungen zu erhalten.
X. Wang

31

Es gibt zwei Möglichkeiten, um dieses Problem zu lösen:

  1. Einstellungen vornehmen (File -> Settings -> Build, Execution, Deployment -> Java Compiler): Geben Sie hier die Bildbeschreibung ein
  2. Fügen Sie Ihrem Build einen Build-Abschnitt hinzu pom.xml: Geben Sie hier die Bildbeschreibung ein

18

Viele Antworten zu Maven sind richtig, aber Sie müssen das Plugin nicht direkt konfigurieren.

Wie auf der Wiki-Seite des Apache Maven Compiler Plugins beschrieben, können Sie einfach die 2 vom Plugin verwendeten Eigenschaften festlegen.

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

1
@ Marvin Richter Ich habe Ihre Lösung ausprobiert, aber sie funktioniert nicht mit IntelliJ. Ich vermute, dass sie im reinen Maven-Build (Befehlszeile) korrekt ist, aber IntelliJ ignoriert diese Eigenschaften einfach. Ich musste das Plugin wie in anderen Lösungen erwähnt konfigurieren.
Benoit

1
Nein, habe ich nicht, weil die anderen Lösungen funktionierten. Und jetzt habe ich mein Projekt auf gradle migriert.
Benoit

4
Funktioniert wie ein Zauber, nachdem Sie dies getan haben. Klicken Sie mit der rechten Maustaste auf pom.xml -> Maven -> Reimport. Dies sollte die akzeptierte Antwort für Maven-Benutzer sein.
Ptkvsk

Sie benötigen das Plugin tatsächlich org.apache.maven.plugins:maven-compiler-pluginin Ihrer POM- oder Gradle-Datei. In der Dokumentation heißt es, dass es ausreicht, diese Eigenschaft in den POM-Eigenschaften festzulegen, da die Standardwerte des Plugins festgelegt werden, z. B. <Quelle> $ { maven.compiler.source} </ source>
EliuX

Dies sollte die akzeptierte Antwort sein. Arbeitete für mich auf IntelliJ 2018.2 auf Mac OS 10.13.5
User674669

13

Ich habe dies behoben, indem ich zu Projektstruktur -> Module gegangen bin , das betreffende Modul gefunden, auf die Registerkarte Abhängigkeiten geklickt und zu gewechselt Module SDKhabe Project SDK.


9

Ich habe es behoben, indem ich die Zielkompilierungsversion auf 1.8 geändert habe. Es ist in:

Datei >> Einstellungen >> Erstellen, Ausführen, Bereitstellen >> Compiler >> Java Compiler


1
Danke, Vishal. Wir müssen die Projekt-Bytecode-Version oder zumindest die Modul-Bytecode-Version mit Intellij Idea angeben. Nur das Einstellen in pom.xml für das Maven-Compiler-Plugin hat das Problem für mich nicht gelöst.
WebComer

6

Sie müssen zum gehen /.idea/compiler.xmlund targetauf das gewünschte jdkNiveau wechseln .

Geben Sie hier die Bildbeschreibung ein


5

In meinem Fall habe ich dieses Problem behoben, indem ich die IML-Datei des Projekts geöffnet habe (sie befindet sich im Projektstammordner und hat den gleichen Namen wie der Name des Projekts) und die Zeile <orderEntry type="jdk" jdkName="1.7" jdkType="JavaSDK" />in geändert habe<orderEntry type="jdk" jdkName="1.8" jdkType="JavaSDK" />

Ich hatte alles wie in anderen Antworten hier konfiguriert, aber aus irgendeinem Grund hat Idea die IML-Datei falsch aktualisiert.


2
Es scheint, dass Intellij die Konfigurationsdateien manchmal nicht aktualisiert, selbst wenn Sie alle Menüs konfiguriert haben. Caches ungültig machen und neu starten (nach dem Bearbeiten der Konfigurationsdateien), hat den Trick für mich getan. Seltsam.
Jah

1
Vielen Dank. Nachdem alle anderen oben angegebenen Lösungen ausprobiert und fehlgeschlagen waren, funktionierte dies schließlich.
Nitin Bansal

4

Ich habe es behoben, indem ich meine POM-Datei geändert habe. Beachten Sie den letzten Kommentar unter der Antwort mit der höchsten Bewertung.

<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.3.2</version>
        <configuration>
            <source>1.8</source>
            <target>1.8</target>
            <encoding>UTF-8</encoding>
        </configuration>
</plugin>

Die Quelle muss mit dem Ziel übereinstimmen.


4

Ich habe gerade die Maven-Schaltfläche erneut importiert, dann ist der Fehler verschwunden.

Geben Sie hier die Bildbeschreibung ein


Vielen Dank. Dieser Hinweis hat es geschafft
Veilchen4ever

3

Wenn Sie mit Android-Studio 1.3 arbeiten, führen Sie die folgenden Schritte aus:

Gehen Sie zu Datei - Projektstruktur

Unter Module - App - Eigenschaften Registerkarte wählen Quelle Kompatibilität - 1.8 und

Zielkompatibilität - 1.8 .

Und du bist gut zu gehen.


3

Fügen Sie in Ihrer Gradle-App-Level-Datei >> compileOptions diese beiden Zeilen hinzu

android {
  compileOptions {
    ...
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
    ...
   }
}

Danke, Mann. Ihre Antwort hat funktioniert
Solution Spirit

1

Unter der Datei compiler.xml finden Sie:

<bytecodeTargetLevel>
  <module name="your_project_name_main" target="1.8" />
  <module name="your_project_name_test" target="1.8" />
</bytecodeTargetLevel>

und Sie können den Zielwert für mich von Ihrem alten auf den neuen ändern. Ich musste ihn von 1,5 auf 1,8 ändern


1

Ich habe gerade eine Weile mit dem gleichen Problem zu kämpfen. Das einzige, was für mich funktioniert hat, war, das erstellte MVN (3.3.9) nicht zu verwenden, sondern es auf eine externe heruntergeladene Version (3.5.0) zu verweisen. Endlich wurde das Projekt eröffnet und alles war gut.


1

Dieses Problem tritt auf, wenn Ihr Modul mit einem Anmerkungsprozessor konfiguriert ist und ein anderes Modul nicht. Stellen Sie für alle Module dieselbe Konfiguration ein, da dies eine zyklische Abhängigkeit sein wird.


0

Für mich bestand das Problem darin, dass Maven keine geeigneten Konfigurationen finden konnte, da diese Elemente im übergeordneten POM angegeben wurden.

Das Ändern der Datei -> Einstellungen -> Erstellen, Ausführen, Bereitstellen -> Maven -> Benutzereinstellungen, um auf meine benutzerdefinierten Einstellungen mit den richtigen Repositorys zu verweisen, behebt das Problem, das ansonsten ausgeblendet wurde.

Informieren Sie sich über das Problem über Hilfe -> Protokoll im Explorer anzeigen -> Klicken Sie auf die Protokolldatei, wenn zuvor nur der Fehler im Titel und "java.lang.NullPointerException" in der Konsole angezeigt wurde.


0

Die Lösung des Problems ist sehr einfach. Sie müssen die Datei .idea / compiler.xml in Ihrem İdea-Projekt und öffnen

Sie sollten die entsprechende Zielversion schreiben


0

Bei Intellij müssen Sie mit Maven überprüfen, ob Intellij Ihr Projekt automatisch importiert hat. Sie können dies überprüfen, indem Sie auf die Registerkarte Maven rechts neben Ihrem Editor klicken.

Geben Sie hier die Bildbeschreibung ein

Wenn Ihr Projekt nicht hier ist, fügen Sie die pom.xmlDatei hinzu, indem Sie auf klicken +.

Natürlich muss das Projekt auch Folgendes haben <build/>:

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

0

Wenn keine der anderen Antworten funktioniert, überprüfen Sie Ihr Modul-SDK .

Dieser Fehler wurde für mich angezeigt, nachdem ich das Projekt-SDK auf 1.8, den Javac-Compiler auf 1.8 usw. aktualisiert hatte. Die Einstellung, die für mich das Problem war, war das "Modul-SDK".

(unter Linux) Gehen Sie File > Project Structure...dann in das sich öffnende Fenster und wählen Sie Modulesunter Project Settings. Wählen Sie das betreffende Modul aus der Liste und dann der DependenciesRegisterkarte aus und stellen Sie sicher, dass Module SDKes richtig eingestellt ist.


0

Ich habe alle oben genannten Punkte überprüft, aber der Fehler tritt immer noch auf.

Aber in meinem Fall funktioniert es erneut, alle Maven-Projekte erneut zu importieren (Schaltfläche zum erneuten Laden im Maven-Projektfenster).


0

Vergessen Sie nicht, Abhängigkeiten für Ihr Modul festzulegen: Geben Sie hier die Bildbeschreibung ein

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.