Java sürümü, maven güncellemesinden sonra otomatik olarak java 1.5'e değişir


121

Eclipse'i IDE olarak kullanıyorum. Projeye sağ tıkladığımda ve ardından maven'e tıkladığımda java sürümümü 1.5'e güncelle. İşte şimdiye kadar yaptığım şey, burada listelenen tüm adımları takip ettim

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

  1. "Java derleme yolunu" "çalışma alanı varsayılanı jre 1.8.0_25" olarak değiştirdim
  2. Daha sonra "java derleyicisi" 1.8 olarak değiştirildi
  3. Daha sonra "proje özellikleri"> java> 1.8 değiştirildi
  4. Pom.xml java sürümü 1.8 olarak değiştirildi
    <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>

Tüm bunlardan sonra "Maven güncellemesi" ni tıkladığımda java sürümüm otomatik olarak 1.5'e değişiyor. Ayrıca yukarıdaki adımlarda, ilk iki adımın versiyonu da otomatik olarak 1.5'e değişir. Bunu nasıl düzeltebilirim?

Yanıtlar:


222

pom.xmlDosyanızı açın ve üzerine aşağıdaki satırları ekleyin:

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

1.8Mevcut JDK / JRE'nizin java sürümü nerede . Bunu yapmanın başka bir yolu <build>da 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>

DÜZENLE

Eğer Java sürümleri ile çalışması için bir yol arıyorsanız 9+ bakmak lütfen JDelorean en @ cevap aşağı burada ve sıra ona bir upvote vermek unutmayın :)


4
Sanırım ikinci yolu zaten yaptım ve kodu da gönderdim. Bu kodda neyi değiştirdiğinizi
görmeyin

1
Evet. Cevap verdiğimde kodu göndermedin. Öyleyse cevabımın ilk kısmını ekleyin. propertiesEtiketi. POM'nuzun zaten bir propertiesetiketi varsa, sadece içindeki etiketleri ekleyin, iyi çalışması gerekir.
Jorge Campos

@asdlfkjlkj tutulmanız gömülü maven mi yoksa harici bir maven kurulumu mu kullanıyor? Tutulmanızın bir JRE'ye mi yoksa JDK'ya mı işaret ettiği başka bir soru? Bu, her şeyi değiştiren tutulma + maven ile ilgili iki sorudur.
Jorge Campos

@JorgeCampos - Yeni bir soru gönderdim. Bunun hakkında bir fikrin var mı? stackoverflow.com/questions/42855512/…
Aishu

@JorgeCampos maven-complier-plugineklemek için nerede bulabilirim <build>? teşekkürler
夢 の の 夢

23

Java 9'u yüklediğimde de aynı sorunu yaşadım. Projem varsayılan olarak J2SE-1.5 Yürütme Ortamı olacaktı. Garip bir şekilde, Java 9 uyumluluk seviyesi önceki sürümler gibi değil, yani "1.8" olarak değil, "9" olarak gösteriliyor. Bu yüzden özelliklerimi ve Maven derleyici eklentisini buna göre yapılandırmalıydım:

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

ve

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

Bu sorunu çözmüş görünüyor.


1
Java 10+ için de geçerlidir ve çok modüllü bir Maven projesinde yalnızca ana POM'da gerekli olduğunu eklemek ister.
mmeany

Java 9 ve üstü ile, --release <version>kaynak / hedef yerine tercih edilen yeni bir derleyici seçeneği vardır. Bu, maven-compiler eklentisindeki maven.compiler.releaseözellik veya <release>ayar ile yapılandırılabilir . Bakınız: stackoverflow.com/questions/43102787/…
Thomas Taylor

7

Bu sorunun temel nedeni, herhangi bir nedenle Eclipse'in .classpath dosyasını pom'dan oluştururken / güncellerken özellik için geçerli bir değeri maven.compiler.sourceçözememesi durumunda, varsayılan olarak kullanacak olmasıdır org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5.

@ Jorge-campos tarafından ustaca yanıtlandığı gibi , bu özelliği ayarlamanın birden fazla yolu vardır.

Ancak, Jorge cevabı vermedi görünür benim için işe. Ayarlarım şunlardı:

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

...

Kesinlikle. ${java.version}olduğu asla (tamamen farklı) özelliğine çözmeyecektir javaVersionve Eclipse özelliği yok sayılır ve varsayılan kullanılır.

Bu da beni her ne sebeple olursa olsun açtığım kısma geri getiriyor ; geliştirici aptallığı bu nedenlerden biri olabilir.


1
Org.eclipse.jdt.launching.JRE_CONTAINER / org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType / J2SE-1.5
aName

"Geliştirici aptallığı bu nedenlerden biri olabilir" demek için olumsuz oylama.
Luke Hutchison

Benim durumumda Eclipse eklentileri oluşturmak için Maven / Tycho kullanıyorum ve yukarıdaki varsayılan, sonuçta MANIFEST.MF dosyasında belirtilen yürütme ortamından türetiliyordu. Yürütme ortamını JavaSE-1.8 olarak değiştirmek sorunu çözdü.
mat101

3

Bu satırları pom.xml dosyanıza ekleyin, ardından JRE Sistem Kitaplığınıza sağ tıklayın -> Özellikler -> Doğru yürütme ortamınızı ayarlamak istediğiniz Java 1.8 veya sürüme ayarlayın.

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

Cevabınızda <build> <plugins> eksik ... cevabınız burada ... </plugins> </build>, bu da onu insanlar için daha net bir cevap haline getiriyor.
Kyle Bridenstine

1

Bu sorunu yaşadım. Benim durumumda, Jorge Campos'un yukarıda bahsettiği <properties> etiketi ve iç içe geçmiş etiketler yanlış yerdeydi. Bunları pom.xml dosyasında <hostversion> ve <dependencies> etiketleri arasına koyarsam, bu davranış durdu.

Bu dosyaların doğrulanması açıksa, bu, Eclipse'de alınabilir.


1

Takım arkadaşı makinemden birinde benzer bir sorunla karşılaşıyorum. Eclipse'in eski versiyonunu kullanıyordu, sanırım Keppler kullanıyordu. Güncellendikten sonra proje JRE sürümünü 1.5 olarak değiştirin.

Eclipse'i en son sürüme basit güncelleme bu sorunu çözer.


Evet, hayır. Neon çalıştırıyorum, çalışma alanı ayarlarımın tümü 1.8, ancak bir Maven projesini içe aktardığımda (veya güncellediğimde) Eclipse, J2SE-1.5 kullanmakta ısrar ediyor.
Antares 42

@ Antares42 herhangi bir sorun olmadan komut satırından inşa edebiliyor musunuz? Hangi m2e sürümünü kullanıyorsunuz?
user902383

1
Komut satırını kullanarak (veya daha doğrusu "Farklı Çalıştır -> Maven oluştur ...") sorunsuz bir şekilde inşa edebilirim. Ancak "Maven -> Update project" i yapar yapmaz JRE kitaplıklarını belirtildiği gibi alıyorum ve Eclipse projeyi oluşturmada başarısız oluyor. Yine de Maven kullanarak inşa edebilirim. maven.compiler.sourceYukarıdaki cevapta belirtildiği gibi bir mülk ekledikten sonra her şey yolunda gidiyor. M2e versiyonum 1.7.1-20161104-1805.
Antares42

1

Benim durumumda (eski JBoss Developer Studio), sorun JRE ortamlarının 1.8 (yalnızca 1.7) içermesiydi. Ben Açıldığında maven-compiler-plugin1.7 sürümü ve güncelleme projesini maven vermedi, bu 1.7 Eclipse JRE sistem kitaplığı güncellendi. görüntü açıklamasını buraya girin

Dolayısıyla çözüm, 1.8 veya üzeri yerleşik bir JRE ortamı içeren daha yeni bir IDE sürümü almak veya manuel olarak yüklemeyi denemektir (bkz. Https://stackoverflow.com/a/35204314 )


0

Java 11 ile bu konuyu güncellememe izin veriyorum.

OpenJDK11'i bilgisayarıma kurdum ve bir uygulamada kullanmak istedim.

Sorun yaşadım çünkü Eclipse projemi Maven ile güncellediğimde JRE'mi her zaman JavaSE-1.5 olarak değiştiriyordu.

Her şeyi söylediğiniz gibi ayarlamıştım, ancak Java Derleme Yolumda "java-11-openjdk.x86_64" Alternante JRE'mden biri olarak her zaman doğrudan seçiyordum. Sorunumu, resimde gösterildiği gibi "Yürütme ortamı" JavaSE-10'u seçerek çözdüm (ancak üzerine çift tıklamanız ve ardından uyumlu bir JRE olarak sizin OpenJDK11 sürümünüzü seçmeniz gerekiyor) resimde gösterildiği gibi. Yürütme ortamı kurulumu

Proje bu (resim) sayesinde Java 11 kullanacak, ancak pom.xml'deki java sürümü için 10 yazmanız ve ayrıca Proje Facets'e java 10'u ayarlamanız gerekiyor.


0

Piyasadan tutulma güncellemesi "JAVA 12" yi yükleme sorununu çözdüm. Tutulmamı Kepler'den Luna'ya geçiriyor.

Bundan sonra, "maven update" problemini çözerek 1.8'i standart JDK olarak ayarlayabildim.


-3

Eclipse'i kepler'den neon'a değiştirdim ve ardından projemi Maven -> Update Project ile güncelledim.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.