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.