Schwerwiegender Fehler beim Kompilieren: ungültige Zielversion: 1.8 -> [Hilfe 1]

170

Ähnliches Problem wie bei einer ungültigen Zielversion: 1.7, aber nachdem ich dem Blog gefolgt bin, ist mein Problem immer noch ungelöst.

Fehler beim Ausführen des Ziels org.apache.maven.plugins: maven-compiler-plugin: 3.1: Kompilieren (Standardkompilieren) im Projekt hm_app: Schwerwiegender Fehler beim Kompilieren: ungültige Zielversion: 1.8 -> [Hilfe 1]

Ich folgte als Tutorial, als ich mit diesem Problem konfrontiert wurde.

abt java & mvn

C:\mvn>echo %JAVA_HOME% 
C:\mvn>echo %JRE_HOME%
C:\mvn>echo %MAVEN_HOME% yields

Ausgänge

C:\Program Files\Java\jdk1.7.0_51
C:\Program Files\Java\jre7
C:\apache-maven-3.0.4
rvd
quelle
3
... und Sie sind sicher, dass Sie Java 8 irgendwo installiert haben?
Makoto
Ich habe x86, 64 Java 7 und kein Java 8
rvd
3
In Ordnung. Warum versuchen Sie also, Java 8-Code ohne Java 8-Compiler zu kompilieren?
Makoto
@ Makoto ty für die Untersuchung meines Problems Installation von Java 8 gelöst es .... ty man :)
rvd
@Makoto Endlich habe ich verstanden, was du gesagt hast "Okay. Warum versuchst du also, Java 8-Code ohne einen Java 8-Compiler zu kompilieren?" Also habe ich gerade in meiner pom.xml-Datei java.version> 1.8 </java.version> zu java.version> 1.7 </java.version> geändert und ich könnte mvn compile auch auf java7 verwenden
rvd

Antworten:

281

Sie haben Ihr %JAVA_HOMEauf jdk 1.7 eingestellt, aber Sie versuchen, mit 1.8 zu kompilieren. Installieren Sie jdk 1.8 und stellen Sie sicher %JAVA_HOME, dass Sie darauf verweisen , oder löschen Sie die Zielversion auf 1.7.

ungültige Zielversion: 1.8

Die Zielversion bezieht sich auf die JDK-Version.

Zavior
quelle
7
Eine weitere mögliche Lösung in meinem Fall ist die Bearbeitung der pom.xml-Datei java.version> 1.8 </ java.version> in java.version> 1.7 </java.version>
rvd
1
Genau hier sucht Maven nach der Java-Version. So effektiv haben Sie die Java-Version in eine Version geändert, die Sie auf Ihrem% JAVA_HOME installiert haben.
Zavior
2
Auf meinem Mac exportiere ich JAVA_HOME = /usr/libexec/java_home -v 1.8, um JAVA_HOME auf den richtigen Speicherort für 1.8 JDK zu setzen. Geben Sie Ihre Lieblingsversion anstelle von 1.8 an. (Es gibt Backticks nach = und nach 8).
Bruce Szalwinski
Ja, richtig, du hast mich erwischt. Ich habe es geändert, um ein anderes Legacy-Programm zu kompilieren, das gestern nur 1.7 unterstützt: D Danke!
Davut Gürbüz
31

Geben Sie den Wert in das Plugin ein:

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

Der Fehler wurde verwendet:

<source>${java.version}</source>
<target>${java.version}</target>
Camila Macedo
quelle
2
In meinem Fall besteht die Lösung darin, sowohl Quelle als auch Ziel auf 1,7 zu ​​setzen
thinkhy
In welcher Datei kann ich das finden?
Yusril Maulidan Raji
21

In meinem Fall verwendete der Maven "Konfiguration ausführen" die falsche JRE (1.7). Stellen Sie sicher, dass Run -> Run Configurations -> (Tab) JRE aktiviert ist, um jdk1.8.x zu sein.

Roland Ettinger
quelle
Das ist wahr, also müssen wir beim nächsten Mal folgende Dinge überprüfen, ob dieser Fehler auftritt: JAVA_HOME, BUILD_Configuration, RUN_Configuration
Farhan
13

Das Problem wurde behoben, da ein JDK auf 1,7 und ein JRE auf 1,8 zeigte. Check-in Eingabeaufforderung meine Eingabe

java -version

und

javac -version.

Beide sollten gleich sein.  

Bikramjit Saha
quelle
5

Für Eclipse habe ich hier mein Problem gelöst:

  1. Einstellungen -> Compiler -> Compiler-Beschwerdeführer-Ebene (Änderung auf 1.8) Geben Sie hier die Bildbeschreibung ein

  2. Perferences -> Installed JREs -> wählen Sie JAVA SE 8 1.8 Geben Sie hier die Bildbeschreibung ein

  3. Neu erstellen über Maven mit Run as Maven Build.

Es sollte Ihnen den ungültigen Zielfehler nicht mehr anzeigen.
Hinweis: Ich musste keine anderen Variablen in meinem Terminal festlegen oder ändern. Hoffe das hilft.

РАВИ
quelle
2

Wenn Sie das in Ihr .profile einfügen, kümmern Sie sich dynamisch um Ihr $JAVA_HOME

export JAVA_HOME=$(/usr/libexec/java_home)

Schließen Sie anschließend Ihre Shell, öffnen Sie eine neue und testen Sie mit

echo $JAVA_HOME

Es sollte so etwas wie anzeigen

/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home

Wenn nicht , entfernen Sie alle anderen Zuweisungen von JAVA_HOME in Ihren Startskripten. Denken Sie daran, dass diese Startskripte mit einem beginnen, .sodass sie ausgeblendet sind und bei Verwendung von *Platzhaltern nicht berücksichtigt werden. Wenn Sie beispielsweise alle Dateien Ihres Home-Verzeichnisses erfassen möchten, müssen Sie Folgendes tun :

grep -s JAVA_HOME ~/.* --exclude=.bash_history
Lilalinux
quelle
1

Das Problem, mit dem ich konfrontiert war, war, dass ich einen Maven-Build über die Eingabeaufforderung, aber nicht über Eclipse erstellen konnte. Was bei Eclipse für mich funktioniert hat, ist, dass ich die Ausführungskonfiguration so geändert habe, dass sie auf den JRE-Ordner innerhalb von JDK verweist, anstatt ihn zu belassen JDK-Ordner nur gemäß Standard. Diese Lösung funktioniert möglicherweise auch für Sie. Versuchen Sie dies jedoch genau dann, wenn alle Java-Pfade korrekt sind. Java und Javac zeigen dieselbe Version wie im Ziel von pom.xml.

Vaibhav Gupta
quelle
Das war mein Problem und meine Lösung.
Skychan
1

Ich hatte dieses Problem bei der Bereitstellung auf Dokku. Aus irgendeinem Grund entschied ich mich für JDK 1.7

Das Erstellen einer system.propertiesDatei und die Einstellung haben java.runtime.version=1.8das Problem behoben. Dokku verwendet jetzt Java Version 8. Auswählen eines JDK auf Heroku

Ich musste es noch nie machen ...

Edmore M Gonese Digolodollarz
quelle
Der Hinweis funktioniert immer noch. Ich musste viel suchen, um die Java-Version in Dokku auf 11 zu ändern. Vielen Dank.
Herr Vanderbilt
1

Wie von Camila Macedo erwähnt, müssen Sie explizit auf die Java-Version für das Compiler-Plugin verweisen. Für Spring Boot können Sie dies mit der nächsten Eigenschaft tun:

  <properties>
    <java.version>1.8</java.version>
    <maven.compiler.release>8</maven.compiler.release>
  </properties>
M. Gryshenko
quelle
Ja, die Einstellung wurde maven.compiler.releasein meinem Maven-Projekt behoben.
Cortex
1

Mit IntelliJ musste ich nur eine andere (höhere) JDK-Version installieren. Nach dem Neustart von IDE funktionierte alles und sogar alle Abhängigkeiten wurden gelöst.

Markus Zeller
quelle
1
IntelliJ neu zu starten war der Schlüssel für mich. Ich habe die Umgebungsvariable von JAVA_HOME aktualisiert, um auf eine andere Java-Version zu verweisen, aber es scheint, dass die Systemvariable in einer vorhandenen CMD-Sitzung nicht aktualisiert wird. Möglicherweise würde es ausreichen, nur eine neue Terminalsitzung zu erstellen.
Ubeogesh
0

Diese Frage wurde nicht explizit zu Docker gestellt, aber ich erhielt den gleichen Fehler, als ich eine pom.xml-Datei hatte, die auf 1.9 abzielte ...

<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <maven.compiler.source>1.9</maven.compiler.source>
  <maven.compiler.target>1.9</maven.compiler.target>
</properties>

... aber dann versucht, Tests gegen einen Docker-Container durchzuführen, indem "maven" selbst angegeben wurde.

docker run -t --rm -v m2_repository:/root/.m2/repository -v $(pwd):/work -w /work maven mvn -e test

Für mich bestand das Update darin, genau die Version zu finden, die ich brauchte.

docker run -t --rm -v m2_repository:/root/.m2/repository -v $(pwd):/work -w /work maven:3.5.2-jdk-9 mvn test

(Hier können Sie mehr erfahren .)

vivat Fische
quelle
0

Auf einem Windows-Computer können Sie die Java-Version vorübergehend festlegen.
Führen Sie diesen Befehl beispielsweise aus, um die Version auf Java 8 zu ändern cmd:

set JAVA_HOME=C:\\...\jdk1.8.0_65
user1316369
quelle
0

Führen Sie ein Force-Maven-Update durch, das die kompatiblen 1,8-Jar-Versionen bringt, und aktualisieren Sie dann beim Erstellen die JRE-Versionen in der Execute-Umgebung von Run Configurations auf 1.8 und klicken Sie auf RUN

Sandig
quelle
0

Wenn Sie Eclipse IDE verwenden, gehen Sie in das Menü Fenster und wählen Sie die Einstellungen aus. Dort suchen Sie nach installierten JREs und wählen die JRE aus, die Sie zum Erstellen des Projekts benötigen

Himanshu Kumar
quelle
-4

Was in meinem Fall funktioniert hat, ist Folgendes:

Ich öffnete das pom.xmlund ersetzte eines der Plug-Ins wie unten.

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

Bevor ich die Quell- und Ziel-Tags bearbeitet habe 1.8, habe ich das geändert 1.7und es hat funktioniert.

VIJAYKUMAR REDDY ALAVALA
quelle
Verstehst du die Änderung, die du vorgenommen hast, oder hast du die Änderung nur in der Hoffnung auf das Beste vorgenommen?
Popeye
Beide. Ich verstehe, dass das Projekt jetzt auf Java 1.7 ausgeführt wird. Ich habe das in der Hoffnung getan, dass es funktionieren wird.
VIJAYKUMAR REDDY ALAVALA