Подтвердить что ты не робот

Ошибка компиляции Maven: (используйте оператор 7 или выше для включения оператора бриллианта)

Я использую maven в IntelliJ, JDK1.8, maven 3.2.5. Получил ошибку компиляции: используйте -source 7 или выше, чтобы включить функцию бриллианта. детали:

  [ERROR] COMPILATION ERROR : 
  [INFO] -------------------------------------------------------------
  [ERROR] TrainingConstructor.java:[31,55] diamond operator is not supported in -source 1.5 (use -source 7 or higher to enable diamond operator)
  [ERROR] DTM.java:[79,21] try-with-resources is not supported in -source 1.5  (use -source 7 or higher to enable try-with-resources)
  [ERROR] ticons.java:[53,44] diamond operator is not supported in -source 1.5  (use -source 7 or higher to enable diamond operator)

Любые предложения? Есть ли другая конфигурация для установки этого уровня? похоже, он не использует java 1.8.

4b9b3361

Ответ 1

Проверьте, как настроен ваш maven-compiler-plugin, он должен использовать java-версию 7 или выше:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
    <configuration>
        <source>1.7</source>
        <target>1.7</target>
    </configuration>
</plugin>

Для более полного ответа см. ниже ниже.

Ответ 2

РЕШЕНИЕ 1. Установите эти свойства в pom.xml

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

РЕШЕНИЕ 2. Настройка плагина компилятора Maven (всегда в pom.xml)

<build>

<plugins>
    <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
            <source>1.7</source>
            <target>1.7</target>
        </configuration>
    </plugin>
</plugins>
...

ПОЧЕМУ ЭТО ПРОИСХОДИТ

Проблема возникает потому, что

[...] в настоящее время настройка источника по умолчанию - 1,5, а настройка цели по умолчанию - 1,5, независимо от JDK, с которым вы запускаете Maven. Если вы хотите изменить эти значения по умолчанию, вам следует установить источник и цель как описано в разделе Установка -source и -target компилятора Java.

Maven Compiler Plugin Introduction (until version 3.3)

и с последними версиями Maven:

Также обратите внимание, что в настоящее время настройка источника по умолчанию - 1.6, а настройка цели по умолчанию - 1.6, независимо от JDK, с которым вы запускаете Maven. Мы настоятельно рекомендуем изменить эти значения по умолчанию, установив источник и цель, как описано в разделе "Установка -source и -target компилятора Java".

Maven Compiler Plugin Introduction

Поэтому изменение JDK не влияет на уровень источника. Таким образом, у вас есть несколько способов сообщить Maven, какой уровень источника использовать.

JDK ВЕРСИЯ ДЛЯ ИСПОЛЬЗОВАНИЯ?

Если вы установите цель 1.7, как в этом примере, убедитесь, что команда mvn действительно запущена с jdk7 (или выше)

УРОВЕНЬ ЯЗЫКА НА ИДЕ

Обычно IDE используют файл maven pom.xml в качестве источника конфигурации проекта. Изменение параметров компилятора в IDE не всегда влияет на сборку maven. Поэтому лучший способ обеспечить постоянное управление проектом с помощью maven (и совместимость с другими IDE) - это отредактировать файлы pom.xml и дать команду IDE синхронизироваться с maven.

Ответ 3

Вам нужно изменить конфигурацию:

<project>
  [...]
  <build>
    [...]
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.2</version>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
        </configuration>
      </plugin>
    </plugins>
    [...]
  </build>
  [...]
</project>

Вы должны узнать разницу между опцией source/taget в JavaC и использованием JDK 1.8/1.7 и т.д.

Кроме того, вы должны обновить использование maven-compiler-plugin.

Ответ 4

Если вы уже пробовали решение @Sergey Pauk и @khmarbaise, посмотрите также в настройках → Build, Execution, Deployment → Compiler → Java Compiler, есть целевые версии байт-кода для определенных модулей

Ответ 5

У меня возникла аналогичная ошибка, когда я разрабатывал графический интерфейс, в какой-то момент я попытался использовать combo-box, но код вернет эту ошибку, хотя это позволит мне запустить код в любом случае. Я переключился на полосу прокрутки, которая работает без ошибок и обладает такой же эффективностью и полезностью, как и поле со списком после того, как вы установили правильные параметры в Spinner-model.