Версія Java автоматично змінюється на java 1.5 після оновлення Maven


121

Я використовую затемнення як 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 update", моя версія 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-pluginяк

<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>

EDIT

Якщо ви шукаєте спосіб , щоб змусити його працювати з Java - версії 9+, будь ласка, подивіться на @ JDelorean в відповідь вниз тут і не забудьте дати йому upvote, а :)


4
Я думаю, що я вже зробив другий спосіб, і я також розмістив код. Не бачите, що ви змінили в цьому коді
asdlfkjlkj

1
Так. Коли я відповів, ви не публікували код. Отже, додайте першу частину моєї відповіді. propertiesТег. Якщо ваш POM вже має propertiesтег, просто додайте теги до нього, він повинен працювати добре.
Хорхе Кампос

@asdlfkjlkj для вашого затемнення використовується вбудована мавен або зовнішня установка Maven? Ще одне питання, яке ваше затемнення вказує на JRE або JDK? Це два питання щодо затемнення + мавен, які мають усі значення.
Хорхе Кампос

@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-компілятора. Дивіться: stackoverflow.com/questions/43102787/…
Thomas Taylor

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
імені

Однією з цих причин може стати скасування «дурість розробника».
Люк Хатчісон

У моєму випадку я використовую 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> та <dependitions> у файлі pom.xml, тоді ця поведінка припинилася.

Це можна отримати в Eclipse, якщо включена перевірка цих файлів.


1

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

Просте оновлення Eclipse до останньої версії вирішує цю проблему.


Так, ні. У мене працює Neon, мої налаштування робочої області всі 1,8, але коли я імпортую (або оновлюю) проект Maven, Eclipse наполягає на використанні J2SE-1.5.
Antares42

@ Antares42 чи можете ви створити з командного рядка без проблем? Яку версію m2e ви використовуєте?
користувач902383

1
Я можу будувати, використовуючи командний рядок (а точніше "Запустити як -> Maven build ...") без проблем. Але як тільки я роблю "Maven -> Update project", я отримую бібліотеки JRE, як було зазначено, і Eclipse не в змозі створити проект. Я все ще можу будувати за допомогою Maven. Як тільки я додаю maven.compiler.sourceвластивість, як зазначено у відповіді вище, все працює добре. Моя версія m2e - 1.7.1-20161104-1805.
Antares42

1

У моєму випадку (стара програма для розробників JBoss), проблема полягає в тому, що середовища 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 Build "java-11-openjdk.x86_64" одним із моїх альтернативних JRE. Я вирішив свою проблему, вибравши JavaSE-10 у "середовищі виконання" (але ви повинні двічі клацнути по ній, а потім вибрати як сумісну JRE свою версію OpenJDK11), як показано на малюнку. Налаштування середовища виконання

Завдяки цьому проект буде використовувати Java 11 (малюнок), але вам потрібно написати 10 для версії java в pom.xml, а також встановити java 10 на Project Faces.


0

Я вирішив проблему, встановивши оновлення затемнення "JAVA 12" з ринку. Це змушує моє затемнення пройти від Кеплера до Луни.

Після цього мені вдалося встановити 1.8 як стандартний JDK, виправляючи проблему "оновлення Maven".


-3

Я змінив Eclipse з кеплера на неоновий, а потім оновив свій проект за допомогою Maven -> Update Project.

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