Ошибка: Java: ошибка: недопустимый исходный выпуск: 13 с использованием JDK12 с IntelliJ - PullRequest
0 голосов
/ 12 января 2019

Я пытаюсь построить проект с JDK-12 шт. При попытке выполнить пример класса:

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    int value = scanner.nextInt();
    // After JEP-325
    switch (value) {
        case 1 ->System.out.println("one");
        case 2 ->System.out.println("two");
        default ->System.out.println("many");
    }
} 

В среде IDE выдается сообщение об ошибке

Ошибка: Java: ошибка: недопустимый исходный выпуск: 13

Соответствующие экраны конфигурации проекта:

enter image description here

Настройки модуля

enter image description here

SDKs

enter image description here

enter image description here

Настройки компилятора

enter image description here Об IDE:

IntelliJ IDEA 2018.3.3 (Community Edition)
Build #IC-183.5153.38, built on January 9, 2019
JRE: 1.8.0_152-release-1343-b26 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
macOS 10.13.6

Попытка переключить обратно уровень языка на 12, без экспериментальных функций, но это заканчивается на

enter image description here

Я помню, как успешно использовал экспериментальные функции в недавнем прошлом (не уверен в точной версии IntelliJ). Что-то изменилось, что мне нужно настроить кроме этого?

Ответы [ 2 ]

0 голосов
/ 14 января 2019

В IDEA v2018.3.2 Preview добавлен уровень языка - параметр enable-preview для командной строки. В v2018.3.3 нет уровня 12 Preview , поэтому параметр должен быть добавлен вручную, как вы правильно упомянули в своем комментарии. Экспериментальные функции не добавляет никаких параметров компиляции.

0 голосов
/ 12 января 2019

Правильный путь ™

Самая ранняя версия IntelliJ, которая поддерживает выражения переключателей, - это версия 2019.1, выпущенная 27 марта 2019 года. Вы можете получить ее здесь: https://www.jetbrains.com/idea/download. Конечно, вам также понадобится JDK 12 и установите его в качестве SDK вашего проекта.

Затем вы можете установить уровень языка:

12 (Preview) - Switch expressions

С этим все должно работать.

Если этого не произойдет, вы можете проверить, что Вы;

  • установить уровень языка проекта, а также уровень языка модуля на «12 (Preview)»
  • установите для выполнения JRE в конфигурации запуска вашего приложения значение 12 (или значение по умолчанию, то есть SDK проекта).
  • установить правильную версию байт-кода в меню «Настройки» -> «Построение, выполнение, развертывание» / «Компилятор» / «Компилятор Java». (Оставьте эти поля пустыми, чтобы соответствовать уровню языка)

Настройка вручную --enable-preview (без intellisense)

Превращение моего комментария в ответ. Вы можете добавить флаг --enable-preview к виртуальной машине, перейдя по адресу:

Выполнить -> Редактировать конфигурации ...

Затем выберите свой основной класс в древовидном меню слева и вставьте --enable-preview в поле «Опции VM»

enter image description here

Вы можете сделать то же самое для компилятора, выполнив:

Файл -> Настройки ...

Затем в древовидном меню под Построить, Выполнить, Развернуть -> Компилятор -> Java Compiler вы можете поместить --enable-preview в "Дополнительную команду" Параметры строки "box:

enter image description here

Обратите внимание, что intellisense после этого может не работать. Я по-прежнему вижу красные волнистые линии под -> с сообщением об ошибке «неожиданный токен». Но когда я нажимаю кнопку запуска, класс компилируется и работает просто отлично.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...