Як змінити версію Java для Maven в IntelliJ?


83

Я новачок як у Maven, так і в IntelliJ IDEA.

У мене проект Maven написаний на Java 8. Щоразу, коли я намагаюся його створити (вікно Maven Projects -> Життєвий цикл -> компіляція -> Запуск 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
David Lilljegren

Це слід помістити в пом, згенерований start.spring.io ! Я не знаю, чому вони цього не роблять. Те, що вони там поміщають "<java.version> 1.8 </java.version>", марно.
User007

1
Переконайтеся, що у вас вже є необхідний SDK / JDK у налаштуваннях платформи.
gkephorus

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
(jdk Intellij становить 1.8), а рівень мови проекту змінено відповідно до 1.4:

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

Це було перевірено ще раз! Це приклад. Найчастіше ви не знижуєте версію JDK до версії 1.4!

Звичайно, якщо ви використовуєте властивості, скажімо, ви ввели пам 1.8, то якщо ви використовуєте 1.8 JDK в Intellij (рівень мови за замовчуванням становить 1,8 або мову за замовчуванням змінили вручну), тоді ви зможете кодувати в 1.8 АЛЕ при компіляції mvn властивості НЕ бачитимуться, і ви встановите за замовчуванням Maven 1.5, а компіляція НЕ вдасться!


До речі, і я думаю, що це створило плутанину, Eclipse підтримує maven.compiler.source та maven.compiler.target.
Руді Віссерс,

Я оновив файл pom, але мені також потрібно було змінити це в налаштуваннях проекту, щоб він працював.
gloomy.penguin

@ gloomy.penguin: Я щойно створив новий проект Idea з архетипу Maven Quickstart. Потім я подивився Параметри проекту ---> Модулі і прочитав 5.0 - ключове слово 'enum', загальне, автобокс тощо. Потім я додав джерело (1.6) і target (1.6) з плагіна maven-compiler-plugin і зробив саме те, що те саме, і я читаю 6- @ Override в інтерфейсах. Думаю, є плутанина. МИ НЕ ХОЧЕМО ЗМІНЮВАТИ SDK за замовчуванням. З цим ми нічого не можемо зробити.
Руді Віссерс,

@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.
Руді Віссерс,

@ gloomy-penguin: Отже, 1.8 підтримуватиме всі конфігурації (але не 9 !!!). Сподіваюся, це допоможе. Повторюю, я щойно перевірив, і це працює. І перевірте результат у Налаштуваннях проекту ---> Модулі.
Руді Віссерс,

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> Імпортер - виберіть спадне меню " JDK для імпортера ", потім виберіть бажану версію Java, натисніть "Застосувати"
  • Створення, виконання, розгортання> Maven> Runner - виберіть спадне меню " JRE ", потім виберіть бажану версію Java, натисніть "Застосувати"
  • Клацніть OK

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.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.