เวอร์ชัน Java จะเปลี่ยนเป็น java 1.5 โดยอัตโนมัติหลังจากอัปเดต maven


121

ฉันใช้ eclipse เป็น IDE เมื่อฉันคลิกขวาที่โปรเจ็กต์จากนั้นคลิก maven update my java version เปลี่ยนเป็น 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 build path" เป็น "workspace default jre 1.8.0_25"
  2. จากนั้นเปลี่ยน "java compiler" เป็น 1.8
  3. จากนั้นเปลี่ยน "project facets"> 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-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>

แก้ไข

หากคุณกำลังมองหาวิธีทำให้มันใช้งานได้กับ Java เวอร์ชัน 9+ โปรดดูคำตอบของ @ JDelorean ที่นี่และอย่าลืมให้คะแนนโหวตแก่เขาด้วย :)


4
ฉันคิดว่าฉันทำวิธีที่สองแล้วและฉันก็โพสต์รหัสด้วย ไม่เห็นสิ่งที่คุณเปลี่ยนแปลงในรหัสนั้น
asdlfkjlkj

1
ใช่. เมื่อฉันตอบคุณยังไม่ได้โพสต์รหัส ดังนั้นเพิ่มส่วนแรกของคำตอบของฉัน propertiesแท็ก หาก POM ของคุณมีpropertiesแท็กอยู่แล้วเพียงแค่เพิ่มแท็กข้างในก็น่าจะใช้ได้ดี
Jorge Campos

@asdlfkjlkj คราสของคุณกำลังใช้ Embeded maven หรือการติดตั้ง maven ภายนอก? อีกคำถามหนึ่งที่คราสของคุณชี้ไปที่ JRE หรือ JDK? นี่เป็นคำถามสองข้อเกี่ยวกับ eclipse + maven ที่สร้างความแตกต่าง
Jorge Campos

@JorgeCampos - ฉันโพสต์คำถามใหม่ คุณมีความคิดเกี่ยวกับเรื่องนี้หรือไม่? stackoverflow.com/questions/42855512/…
Aishu

@JorgeCampos ฉันจะหาที่maven-complier-pluginเพิ่มได้<build>ที่ไหน? ขอบคุณ
夢の夢

23

มีปัญหาเดียวกันเมื่อฉันติดตั้ง Java 9 โครงการของฉันจะเริ่มต้นเป็น J2SE-1.5 Execution Environment น่าแปลกที่ระดับการปฏิบัติตามข้อกำหนด Java 9 ไม่ได้อ้างอิงเหมือนกับเวอร์ชันก่อนหน้านั่นคือ "1.8" แต่เป็น "9" ดังนั้นฉันจึงต้องให้คุณสมบัติและปลั๊กอินคอมไพเลอร์ Maven config ตาม:

<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/…
Thomas Taylor

7

รากสาเหตุของปัญหานี้ก็คือว่าถ้าด้วยเหตุผลใดไม่คราสสามารถแก้ไขที่ถูกต้องค่าสำหรับmaven.compiler.sourceคุณสมบัติเมื่อสร้าง / อัปเดตไฟล์ .classpath จาก pom org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5มันก็จะเริ่มต้นจากการใช้

ตามที่@ jorge-camposตอบอย่างเชี่ยวชาญมีหลายวิธีในการตั้งค่าคุณสมบัตินั้น

อย่างไรก็ตามคำตอบของ Jorge ดูเหมือนจะไม่ได้ผลสำหรับฉัน นี่คือการตั้งค่าของฉัน:

<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

การลงคะแนนว่า "ความโง่เขลาของนักพัฒนาอาจเป็นหนึ่งในสาเหตุเหล่านั้น"
Luke Hutchison

ในกรณีของฉันฉันใช้ Maven / Tycho เพื่อสร้างปลั๊กอิน Eclipse และค่าดีฟอลต์ข้างต้นถูกดึงมาจากสภาพแวดล้อมการดำเนินการที่ระบุในไฟล์ MANIFEST.MF ในท้ายที่สุด การเปลี่ยนสภาพแวดล้อมการดำเนินการเป็น JavaSE-1.8 ช่วยแก้ไขปัญหา
mat101

3

เพิ่มบรรทัดนี้ใน pom.xml ของคุณจากนั้นคลิกขวาที่ JRE System Library ของคุณ -> Properties -> ตั้งค่าสภาพแวดล้อมการดำเนินการที่ถูกต้องเป็น 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> ซึ่งทำให้เป็นคำตอบที่ชัดเจนสำหรับผู้คน
Kyle Bridenstine

1

ฉันมีปัญหานี้ ในกรณีของฉันแท็ก <properties> และแท็กที่ซ้อนกันที่ Jorge Campos กล่าวถึงข้างต้นนั้นผิดที่ ถ้าฉันวางไว้ระหว่างแท็ก <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
ฉันสามารถสร้างโดยใช้บรรทัดคำสั่ง (หรือมากกว่า "Run as -> Maven build ... ") โดยไม่มีปัญหา แต่ทันทีที่ฉันทำ "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 Build Path "java-11-openjdk.x86_64" ให้เป็นหนึ่งใน Alternante JRE ของฉัน ฉันแก้ไขปัญหาของฉันโดยเลือกใน JavaSE-10 "สภาพแวดล้อมการดำเนินการ" (แต่คุณต้องดับเบิลคลิกที่มันแล้วเลือกเป็น JRE รุ่น OpenJDK11 ของคุณที่เข้ากันได้) ดังที่แสดงในภาพ การตั้งค่าสภาพแวดล้อมการดำเนินการ

โปรเจ็กต์จะใช้ Java 11 ด้วย (รูปภาพ) แต่คุณต้องเขียน 10 สำหรับ java-version ใน pom.xml และตั้ง java 10 บน Project Facets


0

ฉันได้แก้ไขปัญหาในการติดตั้งอัปเดต eclipse "JAVA 12" จากตลาดแล้ว มันทำให้คราสของฉันผ่านจากเคปเลอร์ไปลูน่า

หลังจากนั้นฉันสามารถตั้งค่า 1.8 เป็น JDK มาตรฐานได้แก้ไขปัญหา "maven update"


-3

ฉันเปลี่ยน Eclipse จาก kepler เป็นนีออนจากนั้นอัปเดตโครงการของฉันโดยใช้ Maven -> อัปเดตโครงการ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.