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?


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


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


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>

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)


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

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>

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.


9

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

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


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,


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.


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.



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.


3

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

android {
  compileOptions {
    ...
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
    ...
   }
}

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


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.


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.


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.


0

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

Powinieneś napisać odpowiednią wersję docelową


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>

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.


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.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.