Maven verwendet Java 11 nicht: Fehlermeldung „Fatal error compiling: invalid target release: 11“

Lesezeit: 8 Minuten

Benutzer-Avatar
Ayush Surana

Ich versuche mein Projekt mit Java 11 zu kompilieren.

Wenn ich versuche, die Anwendung mit Java 8 als Java-Version in auszuführen pom.xml, es funktioniert gut. Aber wenn ich versuche, es mit Java 11 auszuführen, wirft es einen Fehler.

Schwerwiegender Fehler beim Kompilieren: ungültige Zielversion: 11

Ich habe versucht, das Problem auf verschiedene Weise zu beheben, z. B. durch Ändern der Umgebungsvariablen, Aktualisieren des Pfads und Verweisen von %JAVA_HOME% auf Java 11.

Die Befehle und ihre Ergebnisse wie auf meinem Computer lauten wie folgt:

java -version
echo %JAVA_HOME%

Ausgabe:

java version "11.0.8" 2020-07-14 LTS
C:\Program Files\Java\jdk-11.0.8

ich benutze IntelliJ-IDEE und haben die notwendigen Änderungen vorgenommen, wie in vorgeschlagen dieses Tutorial.

Mein pom.xml Datei sieht in etwa so aus:

<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.0.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <name>demo</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>11</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>com.google.cloud.tools</groupId>
                <artifactId>appengine-maven-plugin</artifactId>
                <version>2.2.0</version>
                <configuration>
                    <version>1</version>
                    <projectId>businessapplication-6963d</projectId>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <source>11</source>
                    <target>11</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

Wenn ich die Maven-Version überprüfe, wird JDK 1.8 als Java-Version angezeigt:

mvn --version

Ausgabe:

Java version: 1.8.0_241, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk1.8.0_241\jre

Wie kann ich Maven auf Java 11 verweisen? Oder, wenn das nicht das Problem ist, wie kann man dieses Problem lösen? Ich glaube nicht, dass diese Frage ein Duplikat der ungültigen Zielversion: 1.7 ist, da ich die in diesem Thread bereitgestellten Lösungen bereits implementiert habe.

Fehler nach dem Erstellen des Projekts:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile (default-compile) on project demo: Fatal error compiling: invalid target release: 11 -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

Die Pfadumgebungsvariable lautet:

C:\Program Files (x86)\Common Files\Intel\Shared Files\cpp\bin\Intel64;
C:\Program Files (x86)\Intel\iCLS Client\;
C:\Program Files\Intel\iCLS Client\;
C:\WINDOWS\system32;C:\WINDOWS;
C:\WINDOWS\System32\Wbem;
C:\WINDOWS\System32\WindowsPowerShell\v1.0\;
C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;
C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;
C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;
C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\WINDOWS\System32\OpenSSH\;
C:\Delhi 2.0\apache-maven-3.6.1\bin;
C:\Program Files\Java\jdk-11.0.8\bin;C:\Program Files\Intel\WiFi\bin\;
C:\Program Files\Common Files\Intel\WirelessCommon\;
C:\Program Files\Git\cmd;D:\Flutter\flutter\flutter\bin;
C:\Users\Infinity97\AppData\Local\Google\Cloud SDK\google-cloud-sdk\bin;
C:\Users\Infinity97\AppData\Local\Microsoft\WindowsApps;
C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2019.2\bin;
H:\apache-maven-3.6.3\bin;
C:\Program Files\PostgreSQL\12\bin;
C:\Program Files\PostgreSQL\12\lib;
C:\Program Files\Docker Toolbox

  • Wo erhalten Sie den Fehler in IntelliJ oder in der Konsole?

    – Simon Martinelli

    29. Juli 2020 um 13:35 Uhr

  • Einmal habe ich mvn clean install -DskipTests auf dem Terminal ausgeführt.

    – Ayush Surana

    29. Juli 2020 um 13:35 Uhr

  • Und im Terminal zeigt JAVA_HOME auf JDK 11?

    – Simon Martinelli

    29. Juli 2020 um 13:38 Uhr

  • Sie erstellen immer JAVA_HOME und setzen Java ohne bin vor den Home-Pfad und verweisen auf %JAVA_HOME%\bin als Eintrag im Pfad. Keine harte Codierung des Java-Pfads in der PATH-Variablen. Dann haben Sie M2_HOME und fügen einen Maven-Pfad ohne einen bin-Ordnerwert hinzu. Setzen Sie in der PATH-Variablen %M2_HOME%\bin als Wert. Öffnen Sie dann eine neue Eingabeaufforderung und führen Sie java -version , javac -version mvn -verion und mvn -e clean install aus. Stellen Sie als @procrastinator sicher, dass Sie keinen fest codierten Pfad in der Datei mvn.bat haben. Löschen Sie alle Hardcodings aus der PATH-Variablen für Java und Maven Home, bevor Sie die obigen Schritte ausführen.

    – Amit Vyas

    29. Juli 2020 um 14:10 Uhr


  • @procrastinator Das Aktualisieren von JAVA_HOME in mvn.cmd (mvn.bat ist mvn.cmd in Maven 3.5 und höher) hat funktioniert. Können Sie dies als Antwort posten, damit ich es als Antwort akzeptieren kann? Ich danke dir sehr!!!

    – Ayush Surana

    29. Juli 2020 um 14:13 Uhr

Benutzer-Avatar
Procrastinator

Es scheint, als hättest du das JAVA_HOME setzen Sie in Ihre mvn.bat. Es könnte auf die ältere Version von Java verweisen (dh in Ihrem Fall 8).

set JAVA_HOME=C:\path\to\jdk11. Versuchen Sie es in der ersten Zeile, bevor Sie Maven aufrufen.

  • Was wäre, wenn meine mvn.bat benutzt set "JAVACMD=%JAVA_HOME%\bin\java.exe"

    – G. Ciardini

    6. Juli 2021 um 15:45 Uhr

  • @G.Ciardini versuchen Sie in diesem Fall, die Variable zu überprüfen, die als definiert ist %JAVA_HOME% und aktualisiere es.

    – Procrastinator

    7. Juli 2021 um 6:38 Uhr

  • mein %JAVA_HOME% und java -version verwenden jdk12 .. also muss ich genau jdk11 verwenden?

    – G. Ciardini

    7. Juli 2021 um 7:09 Uhr

  • Wenn Sie verwenden möchten jdk11 in deinem Projekt dann ja. Oder aber jdk12.

    – Procrastinator

    7. Juli 2021 um 10:23 Uhr

Benutzer-Avatar
Merkur

Ich habe dieses Problem beim Versuch, eine bereitzustellen Frühlingsstiefel Bewerbung um Heroku.

Mein JAVA_HOME wurde korrekt eingestellt, aber ich erhielt immer noch denselben Fehler.

Aber dann hat das bei mir funktioniert:

In deiner pom.xml ablegen, hinzufügen oder an eigenen Kontext anpassen:

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

  • Dies ist nur ein Rollback auf Java 8, sodass Java 11 nicht funktioniert.

    – Scott Baker

    20. Januar 2021 um 16:11 Uhr

  • Ich bin auf diese Frage gestoßen, als ich versuchte, ein Java 8-Projekt auszuführen (während ich auch Java 11 installiert habe). Diese Lösung funktioniert einwandfrei

    – Tejesh Raut

    21. Mai 2021 um 11:38 Uhr

Benutzer-Avatar
Pierre C

Wenn andere Leute das gleiche Problem haben, aber mit Finsternis (Ich weiß, dass OP sich auf IntelliJ IDEA bezog), überprüfen Sie auch die für Maven verwendete JRE:

  • Konfigurationen ausführen…
  • Wählen Sie Ihre Maven Build-Konfiguration aus
  • Klicken Sie auf die Registerkarte JRE und wählen Sie die JRE-Version entsprechend Ihrer aus POM Datei.

Ich stand vor dem gleichen Problem. Das Setzen der Umgebungsvariable JAVA_HOME auf das richtige JDK löste mein Problem.

java -version zeigte die richtige Version, aber echo %JAVA_HOME% zeigte auf das falsche JDK. Das Reparieren hat dieses Problem für mich gelöst.

Benutzer-Avatar
Kff7

Ich hatte das gleiche Problem, obwohl die richtige Java-Version 11 und die JAVA_HOME-Variable gesetzt waren.

Der Wechsel zu einem anderen Java-Anbieter von AdoptOpenJDK zu Corretto löste das Problem.

Sie können verwenden SDKMAN um einfach und schnell zwischen verschiedenen Java-Versionen und Anbietern zu wechseln. (Die JAVA_HOME-Variable wird von SDKMAN automatisch korrekt gesetzt).

Installieren Sie SDKMAN wie folgt:

curl -s "https://get.sdkman.io" | bash

Dann im Terminal eingeben:

source "$HOME/.sdkman/bin/sdkman-init.sh"

So stellen Sie sicher, dass die Installation erfolgreich war:

sdk version

Java 11 installieren:

sdk install java 11.0.13.8.1-amzn
sdk default java 11.0.13.8.1-amzn

So überprüfen Sie die Versionen, die Laufzeit und den Anbieter:

java --version
mvn -v

Benutzer-Avatar
Peter Mortensen

Der schnellste und einfachste Weg ist die Verwendung von SDKMAN https://sdkman.io/:

  1. Installieren Sie JDK 11 mit:

    sdk install 11.0.11.hs-adpt
    
    • sdk list java für die Liste der verfügbaren JDK
  2. Erstellen Sie eine .sdkmanrc-Datei im Hauptverzeichnis Ihres Projekts:

    java=11.0.11.hs-adpt
    
  3. JDK wechseln

    • verwenden sdk env für den Wechsel zum richtigen JDK.

    • Aktivieren Sie für den automatischen Wechsel zur ausgewählten jdk-Version diese in der sdkman-Konfigurationsdatei (~/.sdkman/etc/config)

      sdkman_auto_env=true
      

Benutzer-Avatar
Peter Mortensen

Erster Lauf

/usr/libexec/java_home -V

Dies listet alle möglichen auf JAVA_HOME Pfade auf Ihrer Maschine möglich.

Sie haben zwei Möglichkeiten:

Zeile hinzufügen (Projekt permanent)

JAVA_HOME="/path/to/obtained/from/command/lib"

in deiner maven.bat Datei, idealerweise direkt nach den ersten Kommentaren.

Laufen

export JAVA_HOME=/path/to/obtained/from/command/lib

Vor dem Ausführen des mvnw-Befehls.

  • An Fenster, vermutlich? Auf welcher Edition/Version wurde das getestet? Windows 10?

    – Peter Mortensen

    vor 8 Stunden


1227730cookie-checkMaven verwendet Java 11 nicht: Fehlermeldung „Fatal error compiling: invalid target release: 11“

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy