Вывод типа локальной переменной не распознается

Я установил JDK 10, чтобы опробовать новые функции, и сильно зациклился на var - по какой-то причине, хотя JDK был добавлен в IntelliJ (версия 2018.1), следующий код по-прежнему не компилируется, говоря, что Java не может найдите символ var:

public class Variations {
    public static void main(String[] args) {
        var local = "foo";
        System.out.println(local);
    }
}

Мне здесь не хватает чего-то очевидного, или в IntelliJ есть опция, которую я должен включить?

РЕДАКТИРОВАТЬ: и project, и module SDK и уровень языка установлены на установку Java 10 и lvl. 10 (хотя и не уровень X - experimental).


person Zalán Meggyesi    schedule 30.03.2018    source источник
comment
Убедитесь, что для проекта и всех модулей используется JDK 10. Уровень языка также должен быть установлен на 10 для всех модулей, см. stackoverflow.com/a/12900859/104891 для соответствующих скриншоты.   -  person CrazyCoder    schedule 31.03.2018
comment
@CrazyCoder К сожалению, все это хорошо - это тоже была моя первая мысль (и мне пришлось их изменить), но Rebuild тоже не помог. Я добавлю это к вопросу, поскольку это верная точка зрения.   -  person Zalán Meggyesi    schedule 31.03.2018
comment
Пожалуйста, попробуйте Файл | Сделать недействительными кеши | Сделать недействительным и перезапустить. Удалить конфигурацию IDE (intellij-support.jetbrains.com/hc/articles/206544519) и настроить JDK с нуля. Поделитесь минимальным, полным и поддающимся проверке примером, если проблема не исчезнет.   -  person CrazyCoder    schedule 31.03.2018


Ответы (4)


Очевидно, хотя жесткого перезапуска IDE недостаточно, установив уровень языка на X - Experimental features как в проекте, так и в модуле один раз, а затем повторно установив его на lvl. 10 было достаточно, чтобы вернуть IDE в строй.

Думаю, я должен отдать должное @CrazyCoder за то, что он подал мне идею, даже если косвенно.

person Zalán Meggyesi    schedule 30.03.2018

Некоторое время я искал в Интернете и обнаружил, что IntelliJ полностью поддерживает его. Вы проверили, является ли версия SDK, которую вы используете на IntelliJ, 10-й? Вы можете проверить это, перейдя в Структура проекта (Alt + Shift + Ctrl + S), SDKS. Отсюда, если вы не видите метку 10.0 в левой части панели, просто добавьте ее вручную с помощью кнопки «плюс». Надеюсь это поможет.

person Leonardo Emili    schedule 30.03.2018
comment
Определенно, у меня он установлен как Project SDK, и у меня также установлен уровень языка 10 - по всем оценкам и рассуждениям он должен поддерживать его, а этот код должен компилировать. Отсюда и мое замешательство. - person Zalán Meggyesi; 30.03.2018

В Настройках / Сборка / Компилятор / Компилятор Java вы должны изменить «Целевую версию байт-кода» на 10 в каждом из ваших модулей.

person Alexander Galván    schedule 16.06.2018
comment
Объяснение того, почему он должен это делать, также может быть полезным. - person onetwo12; 17.06.2018
comment
Да, это было первое, что я сделал. По-видимому, мне пришлось повысить языковой уровень выше 10, а затем один раз снова понизить его, и это вернуло IDE в строй. - person Zalán Meggyesi; 18.06.2018

Ваш код отлично работает с Java10 на моем MacOS IntelliJ 2018.1, построенном на < strong> 27 марта 2018 г..

IntelliJ IDEA 2018.1 (Community Edition), сборка № IC-181.4203.550, построена 27 марта 2018 г.

Возможна ошибка с вашим IntelliJ или JDK. Попробуйте вместо этого использовать jshell из терминала. Если можете, обновите свой IntelliJ. Если не получается, проверьте установленный JDK. Версия на моей машине:

"10" 20.03.2018 Среда выполнения Java (TM) SE 18.3 (сборка 10 + 46)

person tonyhoan    schedule 31.03.2018