ungültige Zielversion: 1.7

121

Ich habe ähnliche Fragen gesehen, aber noch keine Antwort gefunden.

Mit Maven Compile erhalte ich:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.0:compile (default-compile) on project api: Fatal error compiling: invalid target release: 1.7 -> [Help 1]

Hier ist die pom.xml:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.0</version>
    <configuration>
        <source>1.7</source>
        <target>1.7</target>
        <encoding>UTF-8</encoding>
    </configuration>
</plugin>

Javac-Version:

javac 1.7.0_25

Java-Version:

java version "1.7.0_25"
Java(TM) SE Runtime Environment (build 1.7.0_25-b15)
Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode)

Irgendeine Idee, was es sein könnte?

Karan
quelle
14
Höchstwahrscheinlich läuft Maven mit Java 6.
Peter Lawrey
3
Ich würde alle Ihre Umgebungsvariablen überprüfen, um festzustellen, ob Java 6 verwendet wird. Beispiel: Java 7 befindet sich möglicherweise auf Ihrem Pfad, aber ich erinnere mich, dass Maven JAVA_HOME oder ähnliches verwendet hat.
Peter Lawrey
36
Ausführen mvn -version. Hier erfahren Sie, welches Java verwendet wird.
JB Nizet
Sie haben Recht, MVN verwendet Java 1.6 - wie kann ich das ändern?
Karan
1
Setzen Sie die Variable JAVA_HOME auf Ihr JDK7-Ausgangsverzeichnis.
JB Nizet

Antworten:

159

Sie müssen JAVA_HOME auf Ihr jdk7-Ausgangsverzeichnis setzen, beispielsweise unter Microsoft Windows:

  • "C: \ Programme \ Java \ jdk1.7.0_40"

oder unter OS X:

  • /Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home
Michał Nowak
quelle
71
Auf einem Mac, auf dem jdk6 und jdk7 installiert sind, kann dies in ~ / .profile erzwungen werden:export JAVA_HOME=$(/usr/libexec/java_home -v 1.7)
Hank
3
jdk8 kann auch verwendet werden, um jdk7-Konformität zu erhalten
Wolfgang Fahl
3
Denken Sie daran, ~ / .profile auf dem Mac neu zu laden mit:source ~/.profile
Caio Iglesias
Dies funktioniert wahrscheinlich für viele Dinge, aber es reicht nicht für Maven und schon gar nicht für das Maven-Compiler-Plugin. Überprüfen Sie Mikes Antwort auf seine eigene Frage hier: Stackoverflow-Frage 24705877 Dies löste das Problem für mich sowohl über die Befehlszeile als auch innerhalb von Eclipse. Auch die Antwort von @LinGao auf die Frage 2503658 zum Stapelüberlauf und die Verwendung der Variablen $ JAVACMD können hilfreich sein.
Litome
42

Abgesehen vom Festlegen der JAVA_HOMEUmgebungsvariablen müssen Sie sicherstellen, dass Sie das richtige JDK in Ihrer Maven-Ausführungskonfiguration verwenden. Gehen Sie zu Ausführen -> Konfiguration ausführen , wählen Sie Ihre Maven Build-Konfiguration aus, wechseln Sie zur Registerkarte JRE und stellen Sie die richtige Laufzeit-JRE ein.

Maven Run Konfiguration

Stanley
quelle
+1, ich wusste, dass ich vergessen habe, etwas zu aktualisieren ... Die Standardoption (für mich) beim Erstellen einer Konfiguration war "Alternative JRE". Wenn jemand anderes darauf stößt, stellen Sie sicher, dass Ihr Maven-Plugin UND die Konfigurationen ordnungsgemäß aktualisiert wurden!
king14nyr
Ich hatte das richtige JAVA_HOME für Java 8, aber es fehlte mir immer noch. Sie haben mein Problem gelöst, danke
dtortola
3

In IntelliJ IDEA passierte mir dies, als ich ein Projekt importierte, das einwandfrei funktionierte und mit Java 1.7 lief. Ich hatte IntelliJ anscheinend nicht benachrichtigt, dass Java 1.7 auf meinem Computer installiert war, und es fand meine nicht $JAVA_HOME.

Auf einem Mac wird dies behoben durch:

Klicken Sie mit der rechten Maustaste auf das Modul | Moduleinstellungen | Projekt

und Hinzufügen des 1.7 SDK durch Auswahl von "Neu" im Projekt-SDK.

Gehen Sie dann zum Hauptmenü von IntelliJ IDEA | Einstellungen | Maven | Läufer

und wählen Sie die richtige JRE. In meinem Fall wurde es korrekt aktualisiert. Verwenden Sie das Project SDK, das jetzt 1.7 war.

user1978019
quelle
Beachten Sie, dass es zumindest auf einem Mac Projekteinstellungen und -einstellungen für Intellij gibt. Ich musste zu Einstellungen -> Build Exec, Deploy -> Java Compiler gehen und dann die Projektbytecode-Version nach Bedarf festlegen.
Opentuned
1

Wenn Maven außerhalb von Eclipse arbeitet, diesen Fehler jedoch nach einer JDK-Änderung anzeigt, wechseln Sie zu Ihrer Maven-Ausführungskonfiguration. Am Ende der Hauptseite befindet sich die Option "Maven-Laufzeit". Meins benutzte den Embedded Maven, also funktionierte es, nachdem ich ihn auf meinen externen Maven umgestellt hatte.

djb
quelle
Wo ist bitte die Maven Run-Konfiguration?
R Claven
1
Klicken Sie mit der rechten Maustaste auf Ihre build.xml, gehen Sie zu "Ausführen als" und dann sollte "Konfiguration ausführen" die letzte Option sein. Wenn Sie durch die Arten von Ausführungskonfigurationen scrollen, ist eine "Maven Build", und Sie können die "Maven Runtime" auswählen. Daneben befindet sich eine Schaltfläche zum Konfigurieren
djb
0

Dies funktioniert wahrscheinlich für viele Dinge, aber es reicht nicht für Maven und schon gar nicht für das Maven-Compiler-Plugin.

Überprüfen Sie hier Mikes Antwort auf seine eigene Frage: Stackoverflow-Frage 24705877

Dies löste das Problem für mich sowohl über die Befehlszeile als auch innerhalb von Eclipse.

Auch die Antwort von @LinGao auf die Stackoverflow-Frage 2503658 und die Verwendung der Variablen $ JAVACMD könnten hilfreich sein, aber ich habe sie selbst nicht getestet.

Litome
quelle