Как изменить версию Java для Maven в IntelliJ?

83

Я новичок как в Maven, так и в IntelliJ IDEA.

У меня есть проект Maven, написанный на Java 8. Всякий раз, когда я пытаюсь его собрать (окно Maven Projects -> Lifecycle -> compile -> Run Maven Build), я получаю серию ошибок компиляции:

[ERROR] path/to/file.java:[26,52] lambda expressions are not supported in -source 1.5
(use -source 8 or higher to enable lambda expressions)

Где я должен изменить значение параметра -source? Я попытался добавить его в качестве дополнительного параметра в Настройки -> Компилятор -> Компилятор Java, но получил те же результаты.

Языковые уровни проекта и модуля установлены на 8.0.

Я использую Maven 3.2.3 и IntelliJ IDEA Community Edition 13.1.2.

слезоточивый
источник
вы его изменили в pom файле?
eis
Мой подход заключался в том, чтобы установить их прямо в IntelliJ следующим образом: http://stackoverflow.com/a/37648709/5154418
Юми Коидзуми

Ответы:

118

Или, что проще, добавьте это в propertiesраздел вашего помпона :

<properties>
  <maven.compiler.source>1.8</maven.compiler.source>
  <maven.compiler.target>1.8</maven.compiler.target>
</properties>
хамид
источник
У меня это не работает в 2017.2.5, пока я не использовал теги <build / configuration>.
Павел Веселов
1
Ни одна из настроек IntelliJ ничего не сделала для меня. Этот ответ - единственное, что исправило его после нескольких часов поиска. Благодаря!
Тим
12
Работает нормально, но не забудьте повторно импортировать файл pom.xml, щелкните правой кнопкой мыши -> Maven -> Reimport
Дэвид Лилльегрен
Это должно быть помещено в помпу, созданную start.spring.io ! Не знаю, почему они этого не делают. То, что они поместили туда "<java.version> 1.8 </java.version>", бесполезно.
User007
1
Убедитесь, что у вас уже есть необходимый SDK / JDK в настройках платформы.
gkephorus 02
34

Резюме:

  • maven-compiler-plugin ВСЕГДА работает! Это то, что я предлагаю вам использовать.

Чтобы изменить уровень языка, используйте

<build>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.4</source>
                <target>1.4</target>
            </configuration>
        </plugin>
    </plugins>
</build>

Свойства не всегда меняют уровень языка Intellij!

В приведенном ниже коде 1.4 был настроен в pom с помощью maven-compiler-plugin
(jdk Intellij равен 1.8), а уровень языка проекта был изменен соответственно на 1.4:

введите описание изображения здесь

Это было перепроверено! Это пример. В большинстве случаев вы не будете понижать версию JDK до 1.4!

Конечно, если вы используете свойства, скажем, вы вставили pom 1.8, а затем, если вы используете JDK 1.8 в Intellij (уровень языка по умолчанию - 1.8 или язык по умолчанию был изменен вручную), тогда вы сможете кодировать в 1.8 НО при компиляции mvn свойства НЕ будут видны, и вы по умолчанию выберете Maven 1.5, и компиляция НЕ будет успешной!

Руди Виссерс
источник
Кстати, и я думаю, что это создало путаницу, Eclipse действительно поддерживает maven.compiler.source и maven.compiler.target.
Руди Виссерс,
Я обновил файл pom, но мне нужно было изменить его и в настройках проекта, чтобы он работал.
gloomy.penguin 04
@ gloomy.penguin: Я только что создал новый проект Idea из архетипа Maven Quickstart. Затем я посмотрел на Настройки проекта ---> Модули и прочитал 5.0 - ключевое слово enum, generic, autoboxing и т. Д. Затем я добавил источник (1.6) и цель (1.6) из maven-compiler-plugin и сделал именно то то же самое, и я прочитал 6- @ Override в интерфейсах. Думаю, здесь путаница. МЫ НЕ ХОЧЕМ МЕНЯТЬ SDK ПО УМОЛЧАНИЮ. Мы ничего не можем с этим поделать.
Rudy Vissers
@gloomy: penguin: Если JDK 1.5 настроен по умолчанию, и вы измените конфигурацию в pom, чтобы спросить 1.6, тогда Idea не изменит SDK по умолчанию на 1.6, 1.7 или 1.8, даже если вы добавили эти jdks в Intellij. Конфигурация в pom просит Idea изменить исходную и целевую версии, используя sdk по умолчанию! В примере на картинке был задан вопрос 1.4, а по умолчанию jdk - 1.8, и, конечно, все в порядке. Вам необходимо настроить jdk по умолчанию, совместимый с версиями, которые вы настроили в pom.
Rudy Vissers
@ gloomy-penguin: Значит, 1.8 будет поддерживать все конфигурации (но не 9 !!!). Надеюсь, поможет. Повторяю только что проверил и все работает. И проверьте результат в настройках проекта ---> Модули.
Rudy Vissers
7

Измените источник, как показано ниже в pom.xml

<build>
        <finalName>MQService</finalName>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
Рахул
источник
6

Я не думаю, что какой-либо ответ на вопрос касался проблемы - « … в IntelliJ ».

Вот шаги: -

  • Перейдите в настройки в IntelliJ (или ярлык ⌘ +,)
  • Сборка, выполнение, развертывание> Maven> Importer - выберите « JDK for Importer». раскрывающееся меню », затем выберите предпочитаемую версию Java, нажмите «Применить».
  • Сборка, выполнение, развертывание> Maven> Runner - выберите раскрывающийся список « JRE », затем выберите предпочитаемую версию Java, нажмите «Применить».
  • Нажмите ОК
папиже
источник
4

Добавление строк ниже в корень (уровень проекта) 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>

изначально размещено по адресу: IntelliJ IDEA 13 использует Java 1.5, несмотря на установку 1.7

Амит Канерия
источник
1

Это можно сделать двумя способами:

Во-первых, добавить свойства

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

второй - Добавить плагин

<plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.5.1</version>
        <configuration>
            <source>1.8</source>
            <target>1.8</target>
        </configuration>
</plugin>
Анудж Теотия
источник
0

Вы должны добавить ниже код в свой pom.xml, чтобы изменить уровень языка.

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

теперь intelliJ 2019.3 CE сделает это за вас, если вы перейдете к импорту, затем alt + enter, где вы получите опцию, говорящую «изменить уровень языка на 8, чтобы использовать эту функцию»

мадроид
источник
0

откройте терминал ubuntu, перейдите в корневой каталог и введите:

export JAVA_HOME = <path to jdk>

например, у меня он отлично работает {сделайте то же самое в терминале IntelliJ}.

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64

для проверки установленного типа значения echo $JAVA_HOME

чтобы проверить тип версии maven: mvn -version

вы можете найти весь путь к JDK, набрав эту команду, и вы можете установить версию JDK.

sudo update-alternatives --config java

также проверьте, что у вас есть такие же java -versionи javac -version.

Панкадж гупта
источник