IntelliJ IDEA 13 использует Java 1.5, несмотря на установку на 1,7


147

Несмотря на указание JDK 1.7 во всех настройках проекта (включая in File -> Project Structure -> Project :: Project SDK), IntelliJ 13при попытке скомпилировать простой код Java 7, использующий оператор diamond, возникает следующая ошибка :

java: diamond operator is not supported in -source 1.5
(use -source 7 or higher to enable diamond operator)

Есть ли другое место в конфигурации, где -source 7должна быть включена ожидаемая опция?


8
Пробовал тебя: File -> Project Structure -> Project :: Project language levelпоменять на Diamonds, ARM, multi-catch etc?
Адам Шахабов

39
Да. Оказывается, есть еще одна опция в меню Файл -> Структура проекта -> Модули :: Источники (рядом с путями и зависимостями), которая имеет опцию «Уровень языка», которую также необходимо установить правильно. Спасибо всем вам, ребята, за комментарии и ответы! :-)
PNS


33
Есть 3 места, которые необходимо обновить. (1) Файл -> Настройки (Ctrl + alt + s для ярлыка), затем «Построение, Выполнение, Развертывание»> Компилятор> Компилятор Java и измените «Целевую версию байт-кода» на желаемую версию Java. (2 и 3) Другое место находится в меню «Файл»> «Структура проекта» (Ctrl + Alt + Shift + S)> «Настройки проекта»> «Проект», измените SDK Project, чтобы он указывал на соответствующую версию Java, и установите для уровня языка проекта значение «Проект». правильная версия. Помощник по коду только изменяет уровень языка для вас, к сожалению, это раздражает новые проекты.
бит

2
Что если в моем проекте 200 модулей, мне придется потратить целый день на их репликацию?

Ответы:


114

Если ничего из этого не помогает (в моем случае), вы можете установить его в своем файле pom.xml, например так:

<properties>
  <maven.compiler.source>1.7</maven.compiler.source>
  <maven.compiler.target>1.7</maven.compiler.target>
</properties>

Как этот крутой парень упомянул здесь: https://stackoverflow.com/a/25888116/1643465


4
хорошая идея, но не передавайте свои жесткие изменения в общий проект, если вы не хотите
нарушить

8
Это решило проблему для меня, спасибо! Как это может «взорвать настройки товарищей по команде»? Если целью проекта является 1,7, то это 1,7. Не то, чтобы у каждого товарища по команде была другая целевая среда.
Исапир

1
Отлично, мой проект Maven.
huuthang

1
Для новых проектов maven этот параметр можно добавить в проекты maven по умолчанию. Использовать настройки | Редактор | Шаблоны файлов и кодов | Maven | Maven Projects.xml <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> Форум поддержки InteliJ
pRmdk

Это сработало для меня. Но только когда я перезапустил IntelliJ, я попытался перестроить проект в одиночку, и это не сработало.
Метин Дагцилар

155

Пожалуйста, проверьте уровни языка вашего проекта / модуля (Структура проекта | Проект; Структура проекта | Модули | Имя модуля | Источники). Вы также можете взглянуть на Настройки | Компилятор | Компилятор Java | Версия байт-кода для каждого модуля.

Установите также это:

Файл -> Структура проекта -> Модули :: Источники (рядом с путями и зависимостями) и имеет параметр «Уровень языка», который также должен быть установлен правильно.


2
И проверь если Additional command line parametersв Java Compilerнастройках пусто.
НеплатныйУдай

2
Примечание: третья вещь (Файл -> Структура проекта -> Модули :: Источники) - это то, что решило это для меня.
Питер

Полезные скриншоты этого процесса завершены на этот ответ: stackoverflow.com/a/21747329/1146608
Патрик М

1
Если вы используете Maven, нужно изменить pom: stackoverflow.com/questions/27037657/…
Benj

11
+1 для уровня языка. Не должно быть ОЧЕНЬ МНОГО мест для установки, переустановки и переустановки одной и той же вещи # $% ^!
G. Ann - SonarSource Team

52

[Для IntelliJ IDEA 2016.2]

Я хотел бы расширить часть ответа Петра Громова современным снимком экрана. Конкретно эта конкретная часть:

Вы также можете взглянуть на Настройки | Компилятор | Компилятор Java | Версия байт-кода для каждого модуля.

Я считаю, что (по крайней мере, в 2016.2): ​​проверка различных коммитов в gitсбрасывает их до 1,5.

Версия байт-кода для каждого модуля


5
Я отказался от поддержания их в правильных числах (по какой-то причине они меняются - я полагаю, когда я делаю git checkout). Я обнаружил, что смог безопасно удалить записи в этом списке; модуль возвращается к использованию «версии байт-кода проекта».
Birchlabs

Эти цифры также неожиданно возвращаются к 1,5. Только жесткое кодирование исходной и целевой версий компилятора в файле pom.xml работает согласованно.
Шелдонкрегер

Обратите внимание на настройку «Версия байт-кода проекта» в верхней части этого снимка экрана, а также на выделенную «Целевую версию байт-кода».
Василий Бурк

@Birchlabs Спасибо, я думаю, что это правильный ответ.
чипсы

1
Это было единственное решение, которое устранило проблему для меня, IntelliJ IDEA 2019.1
Жоао Роша да Силва

19

Кроме того, вы можете применить maven-compiler-plugin с соответствующей версией Java, добавив это в ваш pom.xml:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>
</build>

Это сработало после выхода из проекта, удалив папку .idea и файл .iml, которые все воссоздаются при повторном открытии проекта.
Эндрю

1
Нажатие кнопки «обновить Maven» по идее должно работать.
OlgaMaciaszek

Для работы решения требовалось обновление @OlgaMaciaszek. Спасибо!
Пейн

14

Я попытался внести изменения в Intellij IDEA, как показано ниже:

1.

File >> Settings >> Build, Execution, Deployment >> Compiler >> Java Compiler >> project bytecode version: 1.8 >> Per-module bytecode version: 1.8

2.

File >> Project Structure >> Project Settings >> Project >> SDK : 1.8, Project Language : 8 - Lambdas
File >> Project Structure >> Project Settings >> Modules >> abc : Language level: 8 - Lambdas

но ничего не помогло, он вернул версии на Java 1.5, как только я его сохранил.

Тем не менее, добавление следующих строк в root (уровень проекта) pom.xml помогло мне решить вышеуказанную проблему: (оба варианта работали для меня)

Опция 1:

<properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>

Вариант 2:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>
</build>

11

Файл-> Структура проекта-> Настройки проекта-> Проект-> Уровень языка проекта

Файл-> Структура проекта-> Настройки проекта-> Модули-> Уровень языка

Изменить уровень с помощью выпадающего


4

В командной строке (терминал Unix) перейдите в корневую папку вашего проекта и сделайте это

find . -type f -name '*.iml' -exec sed -i '' s/JDK_1_5/JDK_1_8/g {} +

Это изменит свойство языкового уровня во всех файлах .iml вашего проекта с Java 1.5 на Java 1.8.


Пока не уверен, но вам может понадобиться заменить версию JDK в compiler.xmlкорне проекта (IntelliJ 2017.2):sed 's/target="1.5"/target="1.8"/g' .idea/compiler.xml
Александр Волынец

compiler.xml может быть специфичным для вашего проекта. Эта команда предназначена только для файлов * .iml, которые нужны только для intellij. Возможно, вам придется изменить языковые настройки в вашем maven pom.xml или в вашем случае compiler.xml независимо от IDE.
Сайдип Самбараджу

1
@SaideepSambaraju compiler.xml присутствует в любом проекте по созданию идеи, который я видел. Из того, что я вижу, этот файл является моделью Настройки-> Настройки компилятора (Linux) -> Компилятор (MacOS). Вы можете использовать его для изменения целевой версии скриптом, как сказал Александр, или вручную без интерфейса.
Сергей Саргсян

@SergeySargsyan - я только что проверил, он находится в папке .idea, которую я не смог найти при поиске. Спасибо за указание на это.
Saideep Sambaraju

2

Во- первых, вам необходимо изменить «байткодом версию проекта» под File > Settings,Compiler > Java Compiler

Во-вторых, сделайте полную перестройку.


2

У меня та же проблема, но с другой ситуацией. Я могу скомпилировать без проблем с Maven в командной строке ( mvn clean install), но в Intellij я всегда получаю"java: diamond operator is not supported in -source 1.5" ошибку компиляции, несмотря на то, что я установил maven-compiler-plugin с java 1.8 в pom.xml.

Оказалось, у меня есть настройки удаленного репозитория в файле maven settings.xml, от которых зависит проект, но Intellij использует свой собственный maven, который не имеет такой же настройки с моим локальным maven.

Поэтому я решил изменить настройку Intellij maven ( Settings -> Build, execution, Deployment -> Maven -> Maven home directory) для использования локального maven.


2

В IntelliJ Community Edition 2019.02 изменение следующих настроек работало для меня

  1. Обновите Файл-> Структура проекта-> Настройки проекта-> Проект-> Уровень языка проекта до Java 11 (обновите до версии Java, которую вы хотите использовать в своем проекте), используя раскрывающийся список.

  2. Обновить файл-> Структура проекта-> Настройки проекта-> Модули-> Уровень языка

  3. Обновите Файл-> Настройки-> Сборка, Выполнение, Развертывание -> Компилятор -> Компилятор Java-> Версия ByteCode проекта до java 11.

  4. Обновите целевую версию для всех записей в меню Файл-> Настройки-> Построение, Выполнение, Развертывание -> Компилятор -> Компилятор Java-> Версия байт-кода для каждого модуля.


0

В IntelliJ 2017 у меня работало следующее свойство

  <properties>
        <java.version>1.8</java.version>       
  </properties>

Это работает, только если вы используете родительский проект, такой как Spring boot.
WGGN

0

Еще одна вещь , которая может привести к этому оказывает неправильное versionиз <parent>проекта.

В моем случае это указывало на несуществующий проект, и по какой-то причине IntelliJ понизил версию в настройках до 1.5 и позже, когда я исправил ее, он все еще интерпретировал целевую версию кода как 5 (несмотря на установку его в 11).

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.