Błąd: java: javac Zadanie: wersja źródłowa 8 wymaga wersji docelowej 1.8

889

Za pomocą IntelliJ IDE nie można skompilować żadnych projektów. Zrzuty ekranu ustawień poniżej:

Używane JDK:

http://gyazo.com/b6e32119af7b04090d890cad04db6373

SDK projektu i poziom językowy:

http://gyazo.com/55a5fc9f7f2bb721a04780ce9d74eeab

Poziom języka:

http://gyazo.com/143bffad63fd89cafc231298729df2fc

Czy ktoś ma jakieś pomysły?

Hobbysta
źródło
1
To nie wygląda na błąd z „czystego Intellij”; nie używasz kompilacji mrówek czy czegoś takiego?
fge 27.04.15

Odpowiedzi:

1911
  1. Plik> Ustawienia> Kompilacja, wykonanie, wdrożenie> Kompilator> Kompilator Java
  2. Zmień docelową wersję kodu bajtowego na 1.8 modułu, dla którego pracujesz.

Jeśli korzystasz z Maven

Dodaj wtyczkę kompilatora do węzła pom.xmlnajwyższego poziomu project:

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

(Podniesiony z komentarzy.)

Uwaga: jeśli nie masz nic przeciwko ponownemu zaimportowaniu projektu, jedyną rzeczą, którą naprawdę musisz zrobić, to zmienić pom i ponownie zaimportować projekt, wtedy IntelliJ wybierze prawidłowe ustawienia i nie musisz ich ręcznie zmieniać.

Weslor
źródło
Działa w IntelliJ 14 Ultimate.
DtechNet,
W starszych wersjach IDEA spróbuj: Ustawienia -> Kompilator -> Kompilator Java -> Wersja kodu bajtowego na moduł
Jonik
88
Jeśli korzystasz z komputera Mac, jest to w Intellij IDEA> Preferencje ...> Kompilacja, wykonanie, wdrożenie> Kompilator Java
JP Armstrong
4
Dla IntelliJ nowsze niż 2016.2, jest jeszcze jedna miejsce do sprawdzenia: Project Structure -> Project Settings -> Modules -> Denpendencies -> Module SDK.
Bruce Sun
1
Jeśli masz hierarchię POM z więcej niż dwoma poziomami, a wtyczka kompilatora jest zdefiniowana w macierzystej POM, IntelliJ może nie rozpoznać jej na najgłębszym poziomie. Mówię, że nie, bo w przypadku niektórych innych modułów tak jest, nawet jeśli rozszerzają ten sam macierzysty POM.
Dormouse
202

Musisz przejść do Ustawień i ustawić w kompilatorze Java następujące ustawienia: wprowadź opis zdjęcia tutaj

sprawdź także ustawienia projektu

Grzegorz Mazur
źródło
116

Wygląda to na rodzaj błędu, który generuje Maven, gdy nie masz poprawnie skonfigurowanej wtyczki kompilatora. Oto przykład konfiguracji kompilatora Java 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 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<!-- ... -->

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

<!-- ... -->

</project>
Steve Chaloner
źródło
10
Dla innych początkujących Mavena jak ja, to powinien być pod project, buildi potem plugins.
Darren Hale,
4
Również jeśli <source>1.8</source>i <target>1.8</target>jest skonfigurowany, może wystąpić powyższy błąd.
BuZZ-dEE,
1
To zadziałało dla mnie, dziękuję! Tag wersji nie został rozwiązany (zmieniłem go, aby pasował do mojej wersji Maven), więc skomentowałem to. Wierzę Maven powinien automatycznie pobrać najnowszą wersję właściwą w tej sprawie, w oparciu o ten wątek: stackoverflow.com/questions/17239394/... .
Boris
84

Najszybszy sposób, jaki znalazłem:

  • naciśnij: CTRL+ SHIFT+ A(dla Mac + SHIFT+ A)
  • rodzaj: java compiler
  • naciśnij: ENTER

W oknie Ustawienia ustaw Docelowy kod bajtowy na 1.8

(lub 9 dla java9)

snovelli
źródło
3
To absolutnie działało dla mnie (dzięki!), Ale nie rozumiem, dlaczego różni się to od tego, co jest w pliku pom.xml, ustawieniach modułu itp.
Adam Lehenbauer
1
naciśnij ⌘, aby uzyskać preferencje.
X. Wang
31

Istnieją dwa sposoby rozwiązania tego problemu:

  1. Ustaw ustawienia (File -> Settings -> Build, Execution, Deployment -> Java Compiler): wprowadź opis zdjęcia tutaj
  2. Dodaj sekcję kompilacji do pom.xml: wprowadź opis zdjęcia tutaj
Lord Nighton
źródło
18

Wiele odpowiedzi dotyczących Maven jest poprawnych, ale nie musisz bezpośrednio konfigurować wtyczki.

Jak opisano na stronie wiki wtyczki kompilatora Apache Maven, możesz po prostu ustawić 2 właściwości używane przez wtyczkę.

<project>
  [...]
  <properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>
  [...]
</project>
Marvin Richter
źródło
1
@ Marvin Richter Wypróbowałem twoje rozwiązanie, ale nie działa z IntelliJ - Domyślam się, że jest poprawne w czystej wersji maven (linia poleceń), ale IntelliJ po prostu zignoruj ​​te właściwości. Musiałem skonfigurować wtyczkę, jak wspomniano w innych rozwiązaniach.
Benoit,
1
Nie, nie zrobiłem tego, ponieważ inne rozwiązania działały. A teraz zmigrowałem swój projekt do stopniowania.
Benoit,
4
Działa jak urok po wykonaniu Kliknij prawym przyciskiem myszy pom.xml -> Maven -> Reimport. To powinna być zaakceptowana odpowiedź dla użytkowników Maven.
ptkvsk
Tak naprawdę potrzebujesz wtyczki org.apache.maven.plugins:maven-compiler-pluginw swoim pliku pom lub gradle, co w dokumentacji zamierzonej jest takie, że posiadanie tej właściwości ustawionej we właściwościach pom będzie wystarczające, zasadniczo dlatego, że ustawiają one domyślne wartości wtyczki, np. <Źródło> $ { maven.compiler.source} </source>
EliuX,
To powinna być zaakceptowana odpowiedź. Pracowałem dla mnie nad IntelliJ 2018.2 na Mac OS 10.13.5
user674669
13

Naprawiłem to, przechodząc do Struktura projektu -> Moduły , znajdź dany moduł, kliknij kartę Zależności , zmień Module SDKna Project SDK.

Sam Barnum
źródło
9

Naprawiłem to, zmieniając docelową wersję kompilacji na 1.8. To jest w:

Plik >> Ustawienia >> Kompilacja, wykonanie, wdrożenie >> Kompilator >> Kompilator Java

Vishal
źródło
1
Dzięki, Vishal. Musimy określić wersję kodu bajtowego projektu lub przynajmniej wersję kodu bajtowego na moduł w Intellij Idea. Samo ustawienie go w pom.xml dla wtyczki maven-kompilatora nie rozwiązało problemu.
WebComer,
6

Musisz przejść do /.idea/compiler.xmli przejść targetdo wymaganego jdkpoziomu.

wprowadź opis zdjęcia tutaj

Muhammad Usman
źródło
5

W moim przypadku rozwiązałem ten problem, otwierając plik .iml projektu (znajduje się w folderze głównym projektu i ma taką samą nazwę jak nazwa projektu) i zmieniając wiersz <orderEntry type="jdk" jdkName="1.7" jdkType="JavaSDK" />na<orderEntry type="jdk" jdkName="1.8" jdkType="JavaSDK" />

Miałem wszystko skonfigurowane tak jak w innych odpowiedziach tutaj, ale z jakiegoś powodu Idea zaktualizowała niepoprawnie plik .iml.

Chmura
źródło
2
Wydaje się, że czasami Intellij nie aktualizuje plików konfiguracyjnych, nawet jeśli skonfigurowano wszystkie menu. Unieważnij pamięci podręczne i uruchom ponownie (po edycji plików konfiguracyjnych), załatwiłem sprawę. Dziwne.
jah
1
Dzięki wielkie. Wreszcie, po wypróbowaniu i niepowodzenia każdego innego rozwiązania określonego powyżej, zadziałało.
Nitin Bansal,
4

Naprawiłem to, modyfikując mój plik POM. Zwróć uwagę na ostatni komentarz pod najlepiej głosowaną odpowiedzią.

<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.3.2</version>
        <configuration>
            <source>1.8</source>
            <target>1.8</target>
            <encoding>UTF-8</encoding>
        </configuration>
</plugin>

Źródło musi pasować do celu.

użytkownik4884640
źródło
4

Właśnie ponownie zaimportowałem przycisk maven, po czym błąd zniknął.

wprowadź opis zdjęcia tutaj

Pham Hung
źródło
Dzięki. Ta wskazówka to
sprawdziła
3

Jeśli pracujesz z Android-studio 1.3, wykonaj poniższe czynności -

Idź do pliku - struktura projektu

W obszarze Moduły - aplikacja - karta Właściwości wybierz Zgodność źródła - 1.8 i

Zgodność docelowa - 1.8 .

I jesteś gotowy do wyjścia.

B.shruti
źródło
3

W pliku poziomu aplikacji Gradle >> compileOptions dodaj te dwa wiersze

android {
  compileOptions {
    ...
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
    ...
   }
}
Badr
źródło
Dzięki stary. Twoja odpowiedź zadziałała
Solution Spirit
1

W pliku compiler.xml znajdziesz:

<bytecodeTargetLevel>
  <module name="your_project_name_main" target="1.8" />
  <module name="your_project_name_test" target="1.8" />
</bytecodeTargetLevel>

i możesz zmienić wartość docelową ze starej na nową dla mnie, musiałem zmienić ją z 1,5 na 1,8

Bachiri Taoufiq Abderrahman
źródło
1

Właśnie spędziłem trochę czasu zmagając się z tym samym problemem. Jedyne, co działało dla mnie, to nie używanie wbudowanego mvn (3.3.9), ale skierowanie go na zewnętrzną pobraną wersję (3.5.0). W końcu projekt się rozpoczął i wszystko poszło dobrze.

grzmot
źródło
1

Ten problem występuje, jeśli moduł jest skonfigurowany z procesorem adnotacji, a inny moduł nie jest. Ustaw tę samą konfigurację dla wszystkich modułów, ponieważ byłaby to zależność cykliczna.

Gani
źródło
0

Dla mnie problem polegał na tym, że Maven nie mógł znaleźć odpowiednich konfiguracji, ponieważ te elementy zostały określone w pom nadrzędnej.

Zmiana pliku -> Ustawienia -> Kompilacja, Wykonywanie, Wdrażanie -> Maven -> Plik ustawień użytkownika, aby wskazać moje ustawienia niestandardowe z właściwymi repozytoriami, naprawił problem, który w przeciwnym razie był ukryty.

Dowiedziałem się o problemie poprzez Pomoc -> Pokaż dziennik w eksploratorze -> klikając plik dziennika, gdy poprzednio pojawił się tylko błąd w tytule i „java.lang.NullPointerException” w konsoli.

eis
źródło
0

Rozwiązanie problemu jest bardzo proste . Musisz otworzyć plik .idea / compiler.xml w swoim Projekcie İdea i

Powinieneś napisać odpowiednią wersję docelową

Axmedbek
źródło
0

Korzystając z Intellij , korzystając z Maven , musisz sprawdzić, czy Intellij automatycznie zaimportował Twój projekt. Możesz to sprawdzić, klikając kartę Maven po prawej stronie edytora.

wprowadź opis zdjęcia tutaj

Jeśli Twojego projektu nie ma tutaj, dodaj pom.xmlplik, klikając +.

Oczywiście projekt musi również mieć odpowiednie <build/>:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
            <source>1.8</source>
            <target>1.8</target>
        </configuration>
    </plugin>
Nicolas Zozol
źródło
0

Jeśli żadna z pozostałych odpowiedzi nie działa, sprawdź zestaw SDK modułu .

Po zaktualizowaniu pakietu SDK projektu do wersji 1.8, kompilatora Javac do wersji 1.8 pojawił się ten komunikat o błędzie. Problemem było dla mnie ustawienie „Moduł SDK”.

(w systemie Linux) Przejdź do, File > Project Structure...a następnie w oknie, które zostanie otwarte, wybierz Modulespod Project Settings. Wybierz dany moduł z listy, a następnie z Dependencieszakładki i upewnij się, że Module SDKjest odpowiednio ustawiony.

dzimney
źródło
0

Sprawdziłem wszystkie powyższe, ale błąd nadal występuje.

Ale zaimportuj ponownie wszystkie projekty maven (przycisk przeładowania w panelu projektów Maven) działa w moim przypadku.

kłapnięcie
źródło
0

Nie zapomnij ustawić zależności dla swojego modułu: wprowadź opis zdjęcia tutaj

Hieu Vo
źródło