Версия Java автоматически меняется на Java 1.5 после обновления maven


121

Я использую eclipse как IDE. Когда я щелкаю правой кнопкой мыши по проекту, а затем нажимаю maven, обновите мою версию java, изменив ее до 1.5. Вот что я сделал до сих пор, я выполнил все шаги, перечисленные здесь

http://qussay.com/2013/09/13/solving-dynamic-web-module-3-0-requires-java-1-6-or-newer-in-maven-projects/

  1. Я изменил "Путь сборки Java" на "jre 1.8.0_25 рабочей области по умолчанию"
  2. Затем изменил "Java-компилятор" на 1.8
  3. Затем изменил "аспекты проекта"> java> 1.8
  4. Изменена версия java pom.xml на 1.8
    <build>
        <plugins>
            <plugin>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-maven-plugin</artifactId>
                <version>9.1.3.v20140225</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugin</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

После всего этого, когда я нажимаю «Обновление Maven», моя версия java автоматически меняется на 1.5. Также на вышеуказанных шагах версия первых двух шагов также автоматически изменяется на 1.5. Как я могу это исправить?

Ответы:


222

Откройте свой pom.xmlфайл и добавьте в него следующие строки:

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

Где 1.8находится java-версия вашего текущего JDK / JRE. Другой способ сделать это - добавить <build>с помощью maven-compile-pluginas

<build>
<plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.2</version> <!-- or whatever current version -->
    <configuration>
      <source>1.8</source>
      <target>1.8</target>
    </configuration>
  </plugin>
</plugins>
</build>

РЕДАКТИРОВАТЬ

Если вы ищете способ заставить его работать с версиями Java 9+, пожалуйста, взгляните на ответ @JDelorean здесь и не забудьте также проголосовать за него :)


4
Думаю, я уже сделал второй способ и тоже разместил код. Не вижу, что вы изменили в этом коде
asdlfkjlkj

1
Да. Когда я ответил, вы не разместили код. Итак, добавлю первую часть моего ответа. propertiesТег. Если в вашем POM уже есть propertiesтег, просто добавьте теги внутри него, он должен работать нормально.
Хорхе Кампос,

@asdlfkjlkj ваше затмение использует встроенный maven или внешнюю установку maven? Другой вопрос, что ваше затмение указывает на JRE или JDK? Это два вопроса относительно eclipse + maven, которые имеют большое значение.
Хорхе Кампос,

@JorgeCampos - Я разместил новый вопрос. У тебя есть идеи по этому поводу? stackoverflow.com/questions/42855512/...
Aishu

@JorgeCampos, где я могу maven-complier-pluginдобавить <build>? спасибо
夢 の の 夢

23

Была такая же проблема, когда я установил Java 9. В моем проекте по умолчанию использовалась среда выполнения J2SE-1.5. Как ни странно, уровень соответствия Java 9 указывается не как предыдущие версии, то есть «1.8», а как «9». Поэтому мне пришлось предоставить свои свойства и конфигурацию плагина компилятора Maven соответственно:

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

и

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

Кажется, проблема решена.


1
Также верно для Java 10+ и хотелось бы добавить, что в многомодульном проекте Maven требуется только в родительском POM.
mmeany

В Java 9 и выше появился новый --release <version>параметр компилятора, который предпочтительнее источника / цели. Это можно настроить с помощью maven.compiler.releaseсвойства или <release>параметра в плагине maven-compiler. См .: stackoverflow.com/questions/43102787/…
Томас Тейлор

7

Основная причина этой проблемы заключается в том, что если по какой-либо причине Eclipse не может определить допустимое значение для maven.compiler.sourceсвойства при генерации / обновлении файла .classpath из pom, он просто по умолчанию будет использовать org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5.

Как квалифицированно ответил @ jorge-campos , есть несколько способов установить это свойство.

Однако ответ Хорхе, похоже, не сработал для меня. Вот мои настройки:

<properties>
    <javaVersion>1.8</javaVersion>
    <maven.compiler.source>${java.version}</maven.compiler.source>
    <maven.compiler.target>${java.version}</maven.compiler.target>
</properties>

...

Именно. ${java.version}никогда и не будет преобразовываться в (совершенно другой) собственности javaVersionи Eclipse , игнорируется свойство и используется по умолчанию.

Это возвращает меня к части « по любой причине », с которой я начал; Глупость разработчика может быть одной из таких причин.


1
Как изменить org.eclipse.jdt.launching.JRE_CONTAINER / org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType / J2SE-1.5
aName

Голосование против высказываний "глупость разработчиков может быть одной из таких причин".
Люк Хатчисон,

В моем случае я использую Maven / Tycho для создания подключаемых модулей Eclipse, и указанное выше значение по умолчанию в конечном итоге получено из среды выполнения, указанной в файле MANIFEST.MF. Изменение среды выполнения на JavaSE-1.8 устранило проблему.
mat101

3

Добавьте эти строки в свой pom.xml, затем щелкните правой кнопкой мыши системную библиотеку JRE -> Свойства -> Установите правильную среду выполнения на Java 1.8 или версию, которую вы хотите установить.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.2</version> <!-- or whatever current version -->
    <configuration>
      <source>1.8</source>
      <target>1.8</target>
    </configuration>
  </plugin> 

В вашем ответе отсутствует <build> <plugins> ... ваш ответ здесь ... </plugins> </build>, что делает его более понятным для людей.
Кайл Брайденстайн

1

У меня была такая проблема. В моем случае тег <properties> и вложенные теги, упомянутые выше Хорхе Кампосом, оказались в неправильном месте. Если я поместил их между тегами <hostversion> и <dependencies> в файле pom.xml, это поведение прекратилось.

Это можно увидеть в Eclipse, если включена проверка этих файлов.


1

Я столкнулся с аналогичной проблемой на одном из моих товарищей по команде. Он использовал старую версию Eclipse, я считаю, что он использовал Keppler. После обновления проекта измените версию JRE на 1.5.

Простое обновление Eclipse до последней версии решает эту проблему.


Да нет. Я использую Neon, все настройки моей рабочей области - 1.8, но когда я импортирую (или обновляю) проект Maven, Eclipse настаивает на использовании J2SE-1.5.
Antares42

@ Antares42 умеете ли вы без проблем строить из командной строки? Какую версию m2e вы используете?
user902383

1
Я могу без проблем выполнить сборку из командной строки (точнее, «Запуск от имени -> Сборка Maven ...»). Но как только я выполняю «Maven -> Обновить проект», я получаю упомянутые библиотеки JRE, и Eclipse не может построить проект. Однако я все еще могу создавать с помощью Maven. Как только я добавляю maven.compiler.sourceсвойство, как упомянуто в ответе выше, все работает нормально. Моя версия m2e - 1.7.1-20161104-1805.
Antares42

1

В моем случае (старая JBoss Developer Studio) проблема заключалась в том, что среды JRE не включали 1.8 (только 1.7). Когда я переключил maven-compiler-pluginверсию на 1.7 и сделал проект обновления maven, он обновил системную библиотеку Eclipse JRE до 1.7. введите описание изображения здесь

Таким образом, решение состоит в том, чтобы либо получить более новую версию IDE, которая включает встроенную среду JRE версии 1.8 или новее, либо попытаться установить ее вручную (см. Https://stackoverflow.com/a/35204314 )


0

Позволю себе обновить эту тему до Java 11.

Я установил OpenJDK11 на свой компьютер и хотел использовать его в приложении.

У меня были проблемы, потому что Eclipse всегда менял мою JRE на JavaSE-1.5, когда я обновлял свой проект с помощью Maven.

Я установил все, как вы сказали, но я всегда напрямую выбирал в моем пути сборки Java "java-11-openjdk.x86_64" в качестве одной из моих альтернативных JRE. Я исправил свою проблему, выбрав в «Среде выполнения» JavaSE-10 (но вам нужно дважды щелкнуть по нему, а затем выбрать в качестве совместимой JRE вашу версию OpenJDK11), как показано на рисунке. Настройка среды выполнения

Благодаря этому в проекте будет использоваться Java 11 (рисунок), но вы должны написать 10 для java-версии в pom.xml, а также установить java 10 в аспектах проекта.


0

Я решил проблему с установкой обновления eclipse "JAVA 12" из маркета. Это заставляет мое затмение перейти от Кеплера к Луне.

После этого я смог установить 1.8 как стандартный JDK, исправив проблему с «обновлением maven».


-3

Я изменил Eclipse с kepler на neon, а затем обновил свой проект с помощью Maven -> Update Project.

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