Versi Java secara otomatis berubah menjadi java 1.5 setelah pembaruan maven

121

Saya menggunakan eclipse sebagai IDE. Ketika saya klik kanan pada proyek dan kemudian klik maven perbarui versi java saya ubah menjadi 1.5. Inilah yang saya lakukan sejauh ini, saya mengikuti semua langkah yang tercantum di sini

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

  1. Saya mengubah "jalur build Java" menjadi "workspace default jre 1.8.0_25"
  2. Kemudian ubah "java compiler" menjadi 1.8
  3. Kemudian ubah "project facets"> java> 1.8
  4. Mengubah versi java pom.xml menjadi 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>

Setelah semua ini ketika saya mengklik "update Maven" versi java saya berubah menjadi 1.5 secara otomatis. Juga pada langkah di atas, versi dua langkah pertama juga berubah menjadi 1,5 secara otomatis. Bagaimana cara memperbaikinya?

asdlfkjlkj
sumber

Jawaban:

222

Buka pom.xmlfile Anda dan tambahkan baris berikut di atasnya:

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

Di mana 1.8versi java dari JDK / JRE Anda saat ini. Cara lain untuk melakukan ini adalah menambahkan a <build>dengan 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>

EDIT

Jika Anda mencari cara untuk membuatnya berfungsi dengan Java versi 9+, silakan lihat jawaban @ JDelorean di sini dan jangan lupa untuk memberinya upvote juga :)

Jorge Campos
sumber
4
Saya rasa saya sudah melakukan cara kedua dan saya memposting kodenya juga. Tidak melihat apa yang Anda ubah dalam kode itu
asdlfkjlkj
1
Ya. Ketika saya menjawab Anda belum memposting kode. Jadi, tambahkan bagian pertama dari jawaban saya. The propertiestag. Jika POM Anda sudah memiliki propertiestag, tambahkan saja tag di dalamnya, seharusnya berfungsi dengan baik.
Jorge Campos
@asdlfkjlkj eclipse Anda menggunakan maven tertanam atau instalasi maven eksternal? Pertanyaan lain tentang gerhana Anda yang mengarah ke JRE atau ke JDK? Ini adalah dua pertanyaan tentang gerhana + maven yang membuat semua perbedaan.
Jorge Campos
@JorgeCampos - Saya memposting pertanyaan baru. Apakah kamu tahu tentang itu? stackoverflow.com/questions/42855512/…
Aishu
@JorgeCampos di mana saya dapat menemukan maven-complier-pluginuntuk menambahkan <build>? terima kasih
夢 の の 夢
23

Memiliki masalah yang sama ketika saya menginstal Java 9. Proyek saya akan default ke J2SE-1.5 Execution Environment. Anehnya, tingkat kepatuhan Java 9 tidak direferensikan seperti versi sebelumnya, yaitu "1.8", tetapi sebagai "9". Jadi saya harus menyediakan properti saya dan konfigurasi plugin kompilator Maven yang sesuai:

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

dan

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

Ini sepertinya telah menyelesaikan masalah.

JDelorean
sumber
1
Juga berlaku untuk Java 10+ dan ingin menambahkan bahwa dalam proyek multi-modul Maven hanya diperlukan di POM induk.
banyak
Dengan Java 9 dan yang lebih baru, ada --release <version>opsi compiler baru , yang lebih disukai daripada source / target. Ini dapat dikonfigurasi dengan maven.compiler.releaseproperti atau <release>pengaturan di plugin maven-compiler. Lihat: stackoverflow.com/questions/43102787/…
Thomas Taylor
7

Akar penyebab masalah ini adalah jika karena alasan apa pun Eclipse's tidak dapat menyelesaikan nilai yang valid untuk maven.compiler.sourceproperti saat membuat / memperbarui file .classpath dari pom, itu akan secara default menggunakan org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5.

Seperti yang dijawab secara ahli oleh @ jorge-campos , ada beberapa cara untuk menyetel properti itu.

Namun, jawaban Jorge tampaknya tidak berhasil untuk saya. Berikut adalah pengaturan saya:

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

...

Persis. ${java.version}adalah tidak akan menyelesaikan ke (sekali berbeda) properti javaVersiondan Eclipse diabaikan properti dan digunakan default.

Yang membawa saya kembali ke bagian " untuk alasan apa pun " yang saya buka; kebodohan pengembang bisa menjadi salah satu alasannya.

David Avendasora
sumber
1
Cara mengubah org.eclipse.jdt.launching.JRE_CONTAINER / org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType / J2SE-1.5
aName
Downvoting untuk mengatakan "kebodohan pengembang bisa menjadi salah satu alasan itu".
Luke Hutchison
Dalam kasus saya, saya menggunakan Maven / Tycho untuk membangun plugin Eclipse, dan default di atas pada akhirnya berasal dari lingkungan eksekusi yang ditentukan dalam file MANIFEST.MF. Mengubah lingkungan eksekusi ke JavaSE-1.8 memperbaiki masalah.
mat101
3

Tambahkan baris ini ke pom.xml Anda, lalu klik kanan JRE System Library -> Properties -> Setel lingkungan eksekusi yang benar ke Java 1.8 atau versi yang ingin Anda atur.

<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> 
Avinav Mishra
sumber
Jawaban Anda tidak ada <build> <plugins> ... jawaban Anda di sini ... </plugins> </build> yang membuatnya menjadi jawaban yang lebih jelas bagi orang-orang.
Kyle Bridenstine
1

Saya punya masalah ini. Dalam kasus saya, tag <properti> & tag berlapis yang disebutkan Jorge Campos di atas berada di tempat yang salah. Jika saya meletakkannya di antara tag <hostversion> dan <dependencies> di file pom.xml, maka perilaku ini berhenti.

Itu bisa diambil di Eclipse jika validasi file-file ini diaktifkan.

nsandersen
sumber
1

Saya mengalami masalah serupa di salah satu mesin rekan satu tim saya. Dia menggunakan versi lama Eclipse, saya yakin dia menggunakan Keppler. Proyek setelah diperbarui ubah versi JRE menjadi 1.5.

Memperbarui Eclipse ke versi terbaru memecahkan masalah ini.

pengguna902383
sumber
Ya tidak. Saya menjalankan Neon, pengaturan ruang kerja saya semuanya 1,8, tetapi ketika saya mengimpor (atau memperbarui) proyek Maven, Eclipse bersikeras untuk menggunakan J2SE-1.5.
Antares42
@ Antares42 dapatkah Anda membangun dari baris perintah tanpa masalah? Versi m2e mana yang Anda gunakan?
pengguna902383
1
Saya dapat membangun menggunakan baris perintah (atau lebih tepatnya "Jalankan sebagai -> Maven build ...") tanpa masalah. Tetapi segera setelah saya melakukan "Maven -> Perbarui proyek" saya mendapatkan perpustakaan JRE seperti yang disebutkan dan Eclipse gagal membangun proyek. Saya masih bisa membangun menggunakan Maven. Setelah saya menambahkan maven.compiler.sourceproperti seperti yang disebutkan dalam jawaban di atas, semuanya berfungsi dengan baik. Versi m2e saya adalah 1.7.1-20161104-1805.
Antares42
1

Dalam kasus saya (Studio Pengembang JBoss lama), masalahnya adalah lingkungan JRE tidak menyertakan 1,8 (hanya 1,7). Ketika saya mengganti maven-compiler-pluginversi ke 1.7 dan melakukan proyek pembaruan maven, itu memperbarui pustaka sistem Eclipse JRE ke 1.7. masukkan deskripsi gambar di sini

Jadi solusinya adalah mendapatkan versi IDE yang lebih baru yang menyertakan lingkungan JRE bawaan 1,8 atau lebih baru, atau mencoba menginstalnya secara manual (lihat https://stackoverflow.com/a/35204314 )

blindcodifier9734
sumber
0

Saya mengizinkan diri saya untuk memperbarui subjek itu dengan Java 11.

Saya telah menginstal OpenJDK11 di komputer saya, dan saya ingin menggunakannya di aplikasi.

Saya mengalami masalah karena Eclipse akan selalu mengubah JRE saya ke JavaSE-1.5 ketika saya memperbarui proyek saya dengan Maven.

Saya telah mengatur semuanya seperti yang Anda katakan, tetapi saya selalu langsung memilih di Path Build Java saya "java-11-openjdk.x86_64" sebagai salah satu Alternante JRE saya. Saya memperbaiki masalah saya dengan memilih di "Lingkungan eksekusi" JavaSE-10 (tetapi Anda harus mengklik dua kali di atasnya dan kemudian memilih JRE yang kompatibel dengan versi OpenJDK11 Anda) seperti yang ditunjukkan pada gambar. Pengaturan lingkungan eksekusi

Proyek ini akan menggunakan Java 11 berkat itu (gambar) tetapi Anda harus menulis 10 untuk versi java di pom.xml dan juga mengatur java 10 di Aspek Proyek.

Claeyssic
sumber
0

Saya telah menyelesaikan masalah menginstal pembaruan gerhana "JAVA 12" dari pasar. Itu membuat gerhana saya lolos dari Kepler ke Luna.

Setelah itu, saya dapat menetapkan 1,8 sebagai JDK standar, memperbaiki masalah "pembaruan maven".

Andrea La Rosa
sumber
-3

Saya mengubah Eclipse dari kepler menjadi neon dan kemudian memperbarui proyek saya dengan Maven -> Perbarui Proyek.

puja
sumber