Wie ändere ich die Java-Version für Maven in IntelliJ?

82

Ich bin neu bei Maven und IntelliJ IDEA.

Ich habe ein Maven-Projekt in Java 8 geschrieben. Immer wenn ich versuche, es zu erstellen (Fenster Maven-Projekte -> Lebenszyklus -> Kompilieren -> Maven-Build ausführen), erhalte ich eine Reihe von Kompilierungsfehlern:

[ERROR] path/to/file.java:[26,52] lambda expressions are not supported in -source 1.5
(use -source 8 or higher to enable lambda expressions)

Wo soll ich den Wert des Parameters -source ändern? Ich habe versucht, es als zusätzlichen Parameter unter Einstellungen -> Compiler -> Java-Compiler hinzuzufügen, aber ich habe die gleichen Ergebnisse erhalten.

Die Sprachniveaus des Projekts und des Moduls sind beide auf 8.0 eingestellt.

Ich verwende Maven 3.2.3 und IntelliJ IDEA Community Edition 13.1.2.

Tearvisus
quelle
Hast du es in einer POM-Datei geändert?
Eis
Mein Ansatz war es, sie direkt in IntelliJ zu setzen: http://stackoverflow.com/a/37648709/5154418
Yumi Koizumi

Antworten:

117

Oder einfacher, fügen Sie dies dem propertiesAbschnitt Ihres Poms hinzu :

<properties>
  <maven.compiler.source>1.8</maven.compiler.source>
  <maven.compiler.target>1.8</maven.compiler.target>
</properties>
hamid
quelle
Dies funktioniert in 2017.2.5 für mich nicht, bis ich <build / configuration> -Tags verwendet habe.
Pawel Veselov
Keine der IntelliJ-Einstellungen hat etwas für mich getan. Diese Antwort ist das einzige, was sie nach stundenlangem Suchen behoben hat. Vielen Dank!
Tim
12
Funktioniert einwandfrei, aber vergessen Sie nicht, die Datei pom.xml erneut zu importieren. Klicken Sie mit der rechten Maustaste
David Lilljegren
Dies sollte in den von start.spring.io generierten Pom eingefügt werden ! Ich weiß nicht, warum sie es nicht tun. Was sie dort "<java.version> 1.8 </ java.version>" setzen, ist nutzlos.
User007
1
Stellen Sie sicher, dass das erforderliche SDK / JDK bereits in der Plattformeinstellung vorhanden ist.
Gkephorus
34

Zusammenfassung:

  • 'Maven-Compiler-Plugin' funktioniert IMMER ! Ich schlage vor, es zu verwenden.

Verwenden Sie zum Ändern des Sprachniveaus

<build>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.4</source>
                <target>1.4</target>
            </configuration>
        </plugin>
    </plugins>
</build>

Die Eigenschaften ändern nicht immer das Sprachniveau von Intellij!

Im folgenden Code wurde 1.4 im POM mit dem Maven-Compiler-Plugin konfiguriert
(das JDK von Intellij ist 1.8) und das Sprachniveau des Projekts wurde entsprechend in 1.4 geändert:

Geben Sie hier die Bildbeschreibung ein

Es wurde doppelt überprüft! Es ist ein Beispiel. Meistens werden Sie die Version des JDK nicht auf 1.4 herunterstufen!

Wenn Sie Eigenschaften verwenden, beispielsweise POM 1.8, und wenn Sie in Intellij ein 1.8 JDK verwenden (der Standard für die Sprachstufe ist 1.8 oder der Standard für die Sprache wurde manuell geändert), können Sie 1.8 codieren ABER bei der mvn-Kompilierung werden die Eigenschaften NICHT angezeigt und Sie verwenden standardmäßig Maven 1.5 und die Kompilierung wird NICHT erfolgreich sein!

Rudy Vissers
quelle
Übrigens und ich denke, dies hat zu Verwirrung geführt. Eclipse unterstützt maven.compiler.source und maven.compiler.target.
Rudy Vissers
Ich habe die POM-Datei aktualisiert, musste sie aber auch in den Projekteinstellungen ändern, damit sie wokr wird.
gloomy.penguin
@ gloomy.penguin: Ich habe gerade ein neues Ideenprojekt aus dem Archetyp Maven Quickstart erstellt. Dann habe ich mir Projekteinstellungen ---> Module angesehen und 5.0 - 'enum' Schlüsselwort, generisch, Autoboxing usw. gelesen. Dann habe ich die Quelle (1.6) und das Ziel (1.6) vom maven-compiler-plugin hinzugefügt und genau das gemacht gleiche und ich las 6- @ Override in Schnittstellen. Ich denke, es gibt eine Verwirrung. WIR MÖCHTEN DAS DEFAULT SDK NICHT ÄNDERN. Daran können wir nichts ändern.
Rudy Vissers
@gloomy: penguin: Wenn JDK 1.5 standardmäßig konfiguriert ist und Sie die Konfiguration im POM so ändern, dass 1.6 gefragt wird, ändert Idea das Standard-SDK nicht in 1.6 oder 1.7 oder 1.8, selbst wenn Sie diese JDKS zu Intellij hinzugefügt haben. Die Konfiguration im POM fordert Idea auf, die Quell- und Zielversion mit dem Standard-SDK zu ändern! Im Beispiel im Bild wurde 1.4 gefragt und der Standard-JDK ist 1.8 und natürlich ist es OK. Sie müssen ein Standard-JDK einrichten, das mit den Versionen kompatibel ist, die Sie im POM konfiguriert haben.
Rudy Vissers
@ düsterer Pinguin: Also 1.8 unterstützt alle Konfigurationen (aber nicht 9 !!!). Ich hoffe es hilft. Ich wiederhole, ich habe gerade nachgesehen und es funktioniert. Und bitte überprüfen Sie das Ergebnis in Projekteinstellungen ---> Module.
Rudy Vissers
7

Ändern Sie die Quelle wie unten in pom.xml gezeigt

<build>
        <finalName>MQService</finalName>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
Rahul
quelle
5

Ich glaube nicht, dass eine Antwort auf die Frage das Problem angesprochen hat - "... in IntelliJ ".

Hier sind die Schritte: -

  • Gehen Sie zu Einstellungen in IntelliJ (oder Verknüpfung ⌘ +,)
  • Erstellen, Ausführen, Bereitstellen> Maven> Importer - Wählen Sie die Dropdown-Liste " JDK für Importer " aus und wählen Sie dann Ihre bevorzugte Java-Version aus. Klicken Sie auf Übernehmen
  • Erstellen, Ausführen, Bereitstellen> Maven> Runner - Wählen Sie die Dropdown-Liste " JRE " aus und wählen Sie dann Ihre bevorzugte Java-Version aus. Klicken Sie auf Übernehmen
  • OK klicken
Papigee
quelle
4

Das Hinzufügen der folgenden Zeilen zu root (Projektebene) pom.xml hat mir 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>

ursprünglich veröffentlicht unter: IntelliJ IDEA 13 verwendet Java 1.5 trotz Einstellung auf 1.7

Amit Kaneria
quelle
1

Es gibt zwei Möglichkeiten, dies zu tun:

Zuerst Eigenschaften hinzufügen

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

2. Add Plugin hinzufügen

<plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.5.1</version>
        <configuration>
            <source>1.8</source>
            <target>1.8</target>
        </configuration>
</plugin>
Anuj Teotia
quelle
0

Sie sollten den folgenden Code in Ihre pom.xml einfügen, um eine Änderung der Sprachstufe zu erzwingen

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

Jetzt erledigt IntelliJ 2019.3 CE dies für Sie, wenn Sie zum Import gehen und dann Alt + Enter eingeben. Dort erhalten Sie die Option "Ändern Sie die Sprachstufe auf 8, um diese Funktionalität zu nutzen".

Madroid
quelle
0

Öffnen Sie das Ubuntu-Terminal in Ihrem Stammverzeichnis und geben Sie Folgendes ein:

export JAVA_HOME = <path to jdk>

Zum Beispiel funktioniert es gut für mich {mache dasselbe im IntelliJ-Terminal}.

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64

um den eingestellten Werttyp zu überprüfen echo $JAVA_HOME

So überprüfen Sie den Maven-Versionstyp: mvn -version

Sie können alle Pfade von JDKs finden, indem Sie diesen Befehl eingeben, und Sie können die JDK-Version festlegen.

sudo update-alternatives --config java

Überprüfen Sie auch, ob Sie dasselbe haben java -versionund javac -version.

Pankaj Gupta
quelle