Błąd krytyczny podczas kompilacji: nieprawidłowe wydanie docelowe: 1.8 -> [Pomoc 1]

170

Podobny problem jak w przypadku nieprawidłowego wydania docelowego: 1.7, ale po śledzeniu bloga mój problem nadal nie został rozwiązany.

Nie udało się wykonać celu org.apache.maven.plugins: maven-compiler-plugin: 3.1: kompilacja (domyślna kompilacja) w projekcie hm_app: Błąd krytyczny kompilacja: nieprawidłowe wydanie docelowe: 1.8 -> [Pomoc 1]

I szedł jako samouczek , kiedy w obliczu tego problemu.

abt java & mvn

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

wyjścia

C:\Program Files\Java\jdk1.7.0_51
C:\Program Files\Java\jre7
C:\apache-maven-3.0.4
rvd
źródło
3
... i na pewno masz gdzieś zainstalowaną Javę 8?
Makoto,
mam x86, 64 java 7 i nie java 8
rvd
3
W porządku. Dlaczego więc próbujesz skompilować kod Java 8 bez kompilatora Java 8?
Makoto,
@Makoto ty za przyjrzenie się mojemu problemowi z instalacją java 8 rozwiązał go .... ty człowieku :)
rvd
@Makoto W końcu zrozumiałem, o czym mówiliście: „W porządku. Dlaczego więc próbujesz skompilować kod Java 8 bez kompilatora Java 8?” więc właśnie zmieniłem w moim pliku pom.xml java.version> 1.8 </java.version> na java.version> 1.7 </java.version> i mogłem użyć kompilacji mvn również na java7
rvd

Odpowiedzi:

281

Ustawiono swoimi %JAVA_HOMEdo JDK 1.7, ale staramy się skompilować za pomocą 1.8. Zainstaluj jdk 1.8 i upewnij się, %JAVA_HOMEże tak jest, lub upuść docelową wersję do 1.7.

nieprawidłowe wydanie docelowe: 1.8

Wydanie docelowe odnosi się do wersji jdk.

Zavior
źródło
7
jeszcze jednym możliwym rozwiązaniem w moim przypadku jest edycja pliku pom.xml java.version> 1.8 </java.version> na java.version> 1.7 </java.version>
rvd
1
Właśnie w tym miejscu maven szuka wersji java. W efekcie zmieniłeś wersję java na taką, którą zainstalowałeś na swoim% JAVA_HOME.
Zavior
2
Na moim Macu eksportuję JAVA_HOME =, /usr/libexec/java_home -v 1.8aby ustawić JAVA_HOME na właściwą lokalizację dla 1.8 JDK. Podaj swoją ulubioną wersję zamiast 1.8. (Istnieją znaki odwrotne po = i po 8).
bruce szalwinski
Tak, masz mnie. Zmieniłem to, aby skompilować inny starszy program, który wczoraj obsługuje tylko wersję 1.7: D Dzięki!
Davut Gürbüz
31

Wpisz wartość we wtyczce:

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

Błąd został użyty:

<source>${java.version}</source>
<target>${java.version}</target>
Camila Macedo
źródło
2
W moim przypadku rozwiązaniem jest ustawienie zarówno źródła, jak i celu na 1,7
thinkhy
w jakim pliku mogę to znaleźć?
Yusril Maulidan Raji
21

W moim przypadku maven "Uruchom konfigurację" używał niewłaściwego JRE (1.7). Koniecznie sprawdź Run -> Run Configurations -> (Tab) JRE, aby być jakimś jdk1.8.x.

Roland Ettinger
źródło
to prawda, więc następnym razem mamy następujące rzeczy do sprawdzenia, jeśli wystąpi ten błąd: JAVA_HOME, BUILD_Configuration, RUN_Configuration
Farhan
13

Problem został rozwiązany, ponieważ miałem JDK wskazujący na 1.7, a JRE na 1.8. Sprawdź w wierszu poleceń moje wpisywanie

java -version

i

javac -version.

Obie powinny być takie same.  

Bikramjit Saha
źródło
5

Oto jak rozwiązałem swój problem w przypadku zaćmienia:

  1. Preferencje -> Kompilator -> Poziom kompilatora kompilatora (Zmień na 1.8) wprowadź opis obrazu tutaj

  2. Perferences -> Installed JREs -> wybierz JAVA SE 8 1.8 wprowadź opis obrazu tutaj

  3. Przebuduj przez mavena, używając Run as maven build.

Nie powinno już pokazywać błędu nieprawidłowego celu.
Uwaga: nie musiałem ustawiać ani zmieniać żadnych innych zmiennych w moim terminalu. Mam nadzieję że to pomoże.

РАВИ
źródło
2

Umieszczenie tego w swoim .profile dynamicznie zajmie się Twoim $JAVA_HOME

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

Następnie zamknij powłokę, otwórz nową i przetestuj za pomocą

echo $JAVA_HOME

Powinien wyświetlić coś w stylu

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

Jeśli nie , usuń wszelkie inne przypisania JAVA_HOME ze swoich skryptów startowych. Pamiętaj, że te skrypty startowe zaczynają się od a, .więc są ukryte i nie zostaną uwzględnione podczas używania *symboli wieloznacznych, np. Jeśli chcesz grepować wszystkie pliki z katalogu domowego, musisz:

grep -s JAVA_HOME ~/.* --exclude=.bash_history
lilalinux
źródło
1

Problem, z którym się zmagałem, polegał na tym, że mogłem stworzyć kompilację maven z wiersza poleceń, ale nie z Eclipse. To, co zadziałało w przypadku zaćmienia, to fakt, że zmieniłem konfigurację uruchamiania, aby wskazywała folder JRE w JDK, zamiast zostawiać go w Folder JDK tylko zgodnie ze standardem.To rozwiązanie może również działać dla Ciebie, ale spróbuj tego wtedy i tylko wtedy, gdy wszystkie ścieżki Java są poprawne, java i javac wyświetlają tę samą wersję, co obecna w celu pom.xml.

Vaibhav Gupta
źródło
To był mój problem i rozwiązanie.
Skychan
1

Napotkałem ten problem podczas wdrażania na Dokku, z jakiegoś powodu wybierałem JDK 1.7

Utworzenie system.propertiespliku i ustawienie java.runtime.version=1.8rozwiązało problem. Dokku używa teraz Javy w wersji 8. Wybór JDK na Heroku

Nigdy wcześniej nie musiałem tego robić ...

Edmore M Gonese Digolodollarz
źródło
Podpowiedź nadal działa. Musiałem dużo szukać, żeby zmienić wersję Javy w Dokku na 11. Dziękuję bardzo.
Mister Vanderbilt
1

Jak wspomniała Camila Macedo - musisz wyraźnie wskazać wersję java dla wtyczki kompilatora. W przypadku butów wiosennych możesz to zrobić za pomocą następnej właściwości:

  <properties>
    <java.version>1.8</java.version>
    <maven.compiler.release>8</maven.compiler.release>
  </properties>
M. Gryshenko
źródło
Tak, ustawienie maven.compiler.releasenaprawiło to w moim projekcie Mavena.
Cortex
1

Używając IntelliJ musiałem tylko zainstalować kolejną (wyższą) wersję JDK. Po ponownym uruchomieniu IDE wszystko działało, a nawet wszystkie zależności zostały rozwiązane.

Markus Zeller
źródło
1
Ponowne uruchomienie intelliJ było dla mnie kluczem. Zaktualizowałem zmienną środowiskową JAVA_HOME, aby wskazywała na inną wersję Java, ale wygląda na to, że zmienna systemowa nie jest odświeżana w istniejącej sesji CMD. Być może wystarczyłoby po prostu utworzyć nową sesję terminala.
Ubeogesh
0

To pytanie nie dotyczyło Dockera, ale otrzymałem ten sam błąd, gdy miałem plik pom.xml, który był przeznaczony dla 1,9 ...

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

... ale potem próbował przeprowadzić testy na kontenerze Dockera, określając sam „maven”.

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

W moim przypadku rozwiązaniem było ustawienie dokładnej wersji, której potrzebowałem.

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

(Możesz dowiedzieć się więcej tutaj .)

vivat ryby
źródło
0

Na komputerze z systemem Windows możesz tymczasowo ustawić wersję Java.
Na przykład, aby zmienić wersję na Java 8, uruchom to polecenie na cmd:

set JAVA_HOME=C:\\...\jdk1.8.0_65
user1316369
źródło
0

Wykonaj aktualizację Force Maven, która przyniesie kompatybilne wersje 1.8 Jar, a następnie podczas budowania zaktualizuj wersje JRE w środowisku Execute do 1.8 z Run Configurations i naciśnij RUN

Piaszczysty
źródło
0

Jeśli używasz Eclipse IDE, przejdź do menu Okno i wybierz preferencje, a tam wyszukujesz zainstalowane JRE i wybierasz JRE, którego potrzebujesz do zbudowania projektu

Himanshu Kumar
źródło
-4

To, co zadziałało w moim przypadku, to:

Otworzyłem pom.xmli wymieniłem jedną z wtyczek jak poniżej.

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

Zanim zredagowałem znaczniki źródłowe i docelowe 1.8, zmieniłem to na 1.7i zadziałało.

VIJAYKUMAR REDDY ALAVALA
źródło
Czy rozumiesz zmianę, którą zrobiłeś, czy po prostu dokonałeś zmiany mając nadzieję na najlepsze?
Popeye
Obie. Rozumiem, że projekt działa teraz na Javie w wersji 1.7. Zrobiłem to, mając nadzieję, że to zadziała.
VIJAYKUMAR REDDY ALAVALA