Próbuję użyć java.lang.function.Function
w mojej bazie kodu Java 8, ale w Intellij pojawia się następujący błąd.
Użycie API udokumentowane jako @since 1.6+ Ta inspekcja pozwala znaleźć wszystkie zastosowania metod, które mają tag @since w ich dokumentacji. Może to być przydatne, gdy programowanie jest wykonywane w nowszej wersji zestawu SDK jako docelowej platformy produkcyjnej
Wydaje mi się, że mam prawidłowe ustawienia projektu i kompilatora
Ustawienia projektu: (Plik -> Struktura projektu)
Project Settings -> Project -> Project SDK = Java 1.8
Project Settings -> Project -> Project Language Level = 8 - Lambdas, Type Annotations etc
Ustawienia kompilatora: (Plik -> Ustawienia)
Build, Execution, Deployment -> Compiler -> Java Compiler -> Project Bytecode Version : 1.8
Build, Execution, Deployment -> Compiler -> Java Compiler -> Per module Bytecode Version -> Target Bytecode Version : 1.8
Jaki jest problem?
źródło
Project default
poziomu języka (wSources
zakładce).Project Settings
znajduje się wFile -> Project Structure
Jeśli używasz mavena, dodaj poniższy wiersz do pliku konfiguracyjnego pom.xml , a następnie ponownie zaimportuj lub skompiluj go z mavena.
W przeciwnym razie wybierz kompilator java i poziom języka z poniższej ścieżki.
Plik> Struktura projektu> Ustawienia projektu> Moduły> nazwa modułu> Źródła> Poziom języka> wybierz ten, którego potrzebujesz.
Zmień poziom języka tutaj: -
źródło
W rzeczywistości, jeśli używasz Maven i
pom.xml
właściwości projektu są skonfigurowane poprawnieMożesz ponownie zaimportować parametry Mavena do
intellij-idea
projektu - kliknij prawym przyciskiem myszy wpis główny projektu,Maven -> Reimport
który znajduje się na dole.źródło
Po prostu naprawiłem to w następujący sposób:
Kliknij prawym przyciskiem myszy projekt -> Otwórz ustawienia modułu -> Moduły -> Źródła -> 8 lub nowszy
I wtedy
Jeśli nadal napotykasz błąd i używasz maven , musisz dodać konfigurację kompilacji w
pom.xml
:źródło
Plik> Ustawienia> Kompilacja, wykonanie, wdrożenie> Kompilator Java
Zmień docelową wersję kodu bajtowego na 1.8 modułu, dla którego pracujesz.
Jeśli używasz Maven
Dodaj wtyczkę kompilatora do pom.xml w węźle projektu najwyższego poziomu:
źródło
Jeśli używasz Gradle, nie zapomnij upewnić się, że następujące jest ustawione na 1.8, a nie 1.5 (na przykład z jakiegoś dziwnego powodu w Intelij domyślnie jest to 1.5), więc bez względu na to, co zrobisz na poziomie projektu, aby ustawić kompilator poziom zgodności, to ustawienie będzie nadal powodować problemy z funkcjami Java 8, których nie rozpozna:
źródło
Może twoja konfiguracja repozytorium ma właściwości obejmują wersję kompilatora. zbadać
settings.xml
plik.źródło
Jest jeszcze jedno miejsce, które może powodować ten problem, niezależnie od tego, czy używasz Maven, czy Gradle.
W
Settings | Editor | Inspections | Java language level migration aids | Usages of API which isn't available at the configured language level
programie domyślnym (wydaje mi się) jestRespecting to project language level settings
, ale można to ustawićHigher than:
, co ignoruje ustawienia projektu.Oznacza to, że jeśli zastosujesz się do instrukcji zawartych w innych odpowiedziach i ustawisz poziom języka projektu na, powiedzmy, 8, ale inspekcja jest ustawiona na
Higher than: 7
, IDEA nadal będzie pasować.źródło