Błąd: java: nieprawidłowe wydanie źródłowe: 8 w Intellij. Co to znaczy?


342

Próbuję skompilować kod w używam Intellij Ultimate 13.1.4, ale pojawia się następujący błąd i nie mam pojęcia, co to znaczy:

Information:Using javac 1.7.0_55 to compile java sources
Information:java: Errors occurred while compiling module 'Example'
Information:Compilation completed with 1 error and 0 warnings in 3 sec
Information:1 error
Information:0 warnings
Error:java: invalid source release: 8

Domyślam się, że jest to coś związanego z Javą 8 vs. Java 7, ale nie mam pojęcia, co konkretnie. Próbowałem znaleźć w Google tę wiadomość, ale albo mówią o tym, javacalbo target releasenie wydaje się, żeby miało to zastosowanie.


2
Jaka wersja Java jest zainstalowana? Na jaki JRE / JDK wskazałeś intellij w ustawieniach IDE?
nanofarad

2
Prawdopodobnie ustawienia projektu. Sprawdź wskazany JDK i żądany poziom języka.
duffymo

1
@duffymo miałeś rację, to wskazywało na 8. Nie zdawałem sobie sprawy, że to ustawienie.
David mówi Przywróć Monikę

Odpowiedzi:


768

Miałem ten sam problem podczas „obniżania” projektu z Java 8 do Java 6. Powodem było to, że nie został zmieniony we wszystkich miejscach w IntelliJ.

W IntelliJ 13.1.4 musiałem zmienić wersję Java i SDK w następujących miejscach, aby nie dostać tego błędu:

  • Plik -> Struktura projektu -> Ustawienia projektu
  • Plik -> Struktura projektu -> Ustawienia modułu -> Zakładka: Źródła: Poziom języka
  • Plik -> Struktura projektu -> Ustawienia modułu -> Karta: Zależności: Moduł SDK
  • Plik -> Ustawienia -> Kompilator -> Kompilator Java -> Docelowa wersja kodu bajtowego

zrzut ekranu Plik> Struktura projektu> Projekt

zrzut ekranu Plik> Struktura projektu> Moduły> Źródła

zrzut ekranu Plik> Struktura projektu> Moduły> Zależności

zrzut ekranu Plik> Ustawienia / Preferencje> Kompilator> Kompilator Java

Ostatni punkt był tym, który nie został zaktualizowany w moim przypadku. Gdy to zmieniłem, błąd zniknął.


31
jeden zabija mnie było to jedno: File -> Settings -> Compiler -> Java Compiler -> Target bytecode version. Dzięki.
bitoiu

18
Miałem też problem, ale żadne z powyższych nie zadziałało. Musiałem to zrobić IntelliJ IDEA -> Preferences... -> Build, Execution, Deployment -> Build Tools -> Gradle -> Gradle JVM, na wypadek, gdyby ktoś napotkał ten problem podczas korzystania z Gradle.
Emil,

2
Źródło: Zmiana poziomu języka na 7 - Diamenty, ARM, wielozadaniowość itp. Dla IDEA 15
Mia,

4
To powinna być zaakceptowana odpowiedź. Jako mały heads-up, w IntelliJ IDEA 15, punkt 4 został przeniesiony do Preferences -> Build, Execution, Deployment -> Compiler -> Java Compiler.
odsyłając

Istnieje również wybór JRE w niektórych konfiguracjach uruchamiania / debugowania. Na przykład konfiguracje uruchamiania / debugowania Tomcat mają selektor „JRE”, który może powodować ten błąd.
jordanpg

16

Sprawdź swój pom.xmlpierwszy (jeśli masz)
Sprawdź zależność modułu JDK. Upewnij się, że tak. Aby to zrobić, przejdź do Struktura projektu -> SDK Dodaj ścieżkę do miejsca, w którym zapisałeś 1.8 ( w moim przypadku) Zastosuj zmiany Teraz przejdź do Struktura projektu -> Moduły Zmień moduł SDK, aby zastosować zmiany1.8

jdk1.8.0_45.jdk


1.8

Voila! Jesteś skończony


6

Dla użytkowników Gradle, którzy mają takie problemy, jeśli nic powyżej nie pomoże, to rozwiązało mój problem - zastosuj te deklaracje w plikach build.gradle:

targetCompatibility = 1.6 //or 1.7;1.8 and so on
sourceCompatibility = 1.6 //or 1.7;1.8 and so on

Problem rozwiązany!


5

Zmień pom.xml 1.6na1.8

<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
    </configuration>
</plugin>

5

Można to po prostu przezwyciężyć przez włączenie Project Structure. Musisz tylko wybrać właściwą ścieżkę dla pokrewnej wersji JDK. Wybierz newkartę zależności i wybierz ścieżkę. Zrobione!

wprowadź opis zdjęcia tutaj



2

Odpowiedź Andreasa Lundgrena zadziałała i mogłem skompilować i uruchomić moją aplikację.

Jednak gdy próbowałem uruchomić powiązane testy projektu JUnit, otrzymałem ten sam błąd. Bieganie

gradle -version

z wiersza polecenia systemu Windows pokazał, że grad wciąż odbiera niepoprawny plik jdk. Aby to naprawić, musiałem ustawić JAVA_HOMEzmienną środowiskową tak, aby wskazywała prawidłowy jdk i zrestartować IntelliJ.


1

Sprawdziłem wszystkie powyższe wersje projektu, wersję modułu, wersję kodu bajtowego projektu, ustawienia docelowej wersji kodu bajtowego w IntelliJ Idea, ale wszystkie były takie same, jak po podrapaniu.

Jestem ofiarą tego błędu Error:java: invalid source release: 1.8w IntelliJ Idea 2017.2.6bo zmodernizowane wersji zależność Mavenpliku POM, który (zależność) miały zbudować dla JDK 1.8 aplikacji i I zostały budowania mojej aplikacji na i z maven kompilatora źródła i celu JDK 1.7.

Dlatego ponownie obniżyłem wersję zależności do wcześniejszej wersji w Mavenpom, a błąd zniknął po projekcie Odbuduj moduł „xyz_project”.


0

W przypadku użytkowników Grails zastosuj następujące deklaracje w pliku BuildConfig.groovy:

grails.project.target.level = 1.6 //or 1.7;1.8 and so on
grails.project.source.level = 1.6 //or 1.7;1.8 and so on

0

Musisz kliknąć na projekt Otwórz ustawienia modułu i zmienić ścieżkę JDK, jeśli w pliku POM używasz jdk 1.8, skonfiguruj jdk 1.8 z poprawną ścieżką.



0

Wypróbowałem wszystkie kroki wymienione tutaj https://stackoverflow.com/a/26009627/2058104 , ale czwarty punkt się zmienił. Musisz przejść do Preferencje -> Kompilacja, wykonanie, wdrożenie -> Kompilator -> Kompilator Java

Tam, jak pokazano na poniższym rysunku, musisz zmienić „Docelową wersję kodu bajtowego”. Chociaż zmieniłem go na 8 (ponieważ musiałem obniżyć wersję Java 8), ciągle pojawiał się ten sam błąd. Dlatego spróbuj usunąć istniejący wpis (w tej tabeli) i dodaj go ponownie. To zadziałało dla mnie.

wprowadź opis zdjęcia tutaj

Z drugiej strony wyczyść projekt i spróbuj uruchomić ponownie.

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.