รุ่นเป้าหมายไม่ถูกต้อง: 1.7


121

ฉันเคยเห็นคำถามที่คล้ายกัน แต่ยังไม่พบคำตอบ

ใช้ maven compile ฉันจะได้รับ:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.0:compile (default-compile) on project api: Fatal error compiling: invalid target release: 1.7 -> [Help 1]

นี่คือ pom.xml:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.0</version>
    <configuration>
        <source>1.7</source>
        <target>1.7</target>
        <encoding>UTF-8</encoding>
    </configuration>
</plugin>

เวอร์ชัน Javac:

javac 1.7.0_25

เวอร์ชัน Java:

java version "1.7.0_25"
Java(TM) SE Runtime Environment (build 1.7.0_25-b15)
Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode)

มีความคิดยังไงบ้าง?


14
maven ที่น่าจะทำงานโดยใช้ Java 6
Peter Lawrey

3
ฉันจะตรวจสอบตัวแปรสภาพแวดล้อมทั้งหมดของคุณเพื่อดูว่ามีการใช้ Java 6 หรือไม่เช่น Java 7 อาจอยู่ในเส้นทางของคุณ แต่ฉันจำได้ว่า maven ใช้ JAVA_HOME หรืออะไรทำนองนั้น
Peter Lawrey

36
mvn -versionปฏิบัติ มันจะบอกคุณว่ามันใช้ Java ตัวไหน
JB Nizet

คุณพูดถูก mvn ใช้ java 1.6 - ฉันจะเปลี่ยนสิ่งนี้ได้อย่างไร
Karan

1
ตั้งค่าตัวแปร JAVA_HOME เป็นโฮมไดเร็กทอรี JDK7 ของคุณ
JB Nizet

คำตอบ:


159

คุณต้องตั้งค่า JAVA_HOME เป็นโฮมไดเร็กทอรี jdk7 ของคุณตัวอย่างเช่นบน Microsoft Windows:

  • "C: \ Program Files \ Java \ jdk1.7.0_40"

หรือบน OS X:

  • /Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home

71
บน Mac ที่ติดตั้ง jdk6 และ jdk7 สิ่งนี้สามารถบังคับได้ใน ~ / .profile:export JAVA_HOME=$(/usr/libexec/java_home -v 1.7)
แฮงค์

3
นอกจากนี้ยังสามารถใช้ jdk8 เพื่อรับการปฏิบัติตามข้อกำหนดของ jdk7
Wolfgang Fahl

3
อย่าลืมโหลด ~ / .profile บน mac ด้วย:source ~/.profile
Caio Iglesias

สิ่งนี้อาจใช้งานได้หลายอย่าง แต่ก็ไม่เพียงพอสำหรับ Maven และไม่ใช่สำหรับปลั๊กอินคอมไพเลอร์ maven ตรวจสอบคำตอบของ Mike สำหรับคำถามของเขาเองที่นี่: stackoverflow question 24705877สิ่งนี้ช่วยแก้ปัญหาให้ฉันได้ทั้งบรรทัดคำสั่งและภายใน eclipse นอกจากนี้ @LinGao ตอบคำถาม stackoverflow 2503658และการใช้ตัวแปร $ JAVACMD อาจช่วยได้
Litome

42

นอกเหนือจากการตั้งค่าJAVA_HOMEตัวแปรสภาพแวดล้อมคุณต้องตรวจสอบให้แน่ใจว่าคุณใช้ JDK ที่ถูกต้องในการกำหนดค่าการรัน Maven ของคุณ ไปที่Run -> Run Configurationเลือกการกำหนดค่า Maven Build ของคุณไปที่แท็บ JRE และตั้งค่า Runtime JRE ที่ถูกต้อง

Maven รันการกำหนดค่า


+1 ฉันรู้ว่าฉันลืมอัปเดตบางอย่าง ... ตัวเลือกเริ่มต้น (สำหรับฉัน) เมื่อสร้างการกำหนดค่าคือ "JRE สำรอง" หากใครพบเจอสิ่งนี้ตรวจสอบให้แน่ใจว่าปลั๊กอินและการกำหนดค่า maven ของคุณได้รับการอัปเดตอย่างถูกต้อง!
king14nyr

ฉันมี JAVA_HOME ที่ถูกต้องสำหรับ Java 8 แต่ฉันยังขาดสิ่งนี้ คุณแก้ปัญหาของฉันได้ขอบคุณ
dtortola

3

ใน IntelliJ IDEA สิ่งนี้เกิดขึ้นกับฉันเมื่อฉันนำเข้าโปรเจ็กต์ที่ทำงานได้ดีและทำงานด้วย Java 1.7 เห็นได้ชัดว่าฉันไม่ได้แจ้ง IntelliJ ว่ามีการติดตั้ง java 1.7 บนเครื่องของฉันแล้วและไม่พบ$JAVA_HOMEไฟล์.

ใน Mac สิ่งนี้แก้ไขได้โดย:

คลิกขวาที่โมดูล | การตั้งค่าโมดูล | โครงการ

และเพิ่ม 1.7 SDK โดยเลือก "ใหม่" ใน Project SDK

จากนั้นไปที่เมนูหลัก IntelliJ IDEA | ค่ากำหนด | Maven | ทางวิ่ง

และเลือก JRE ที่ถูกต้อง ในกรณีของฉันมันอัปเดตอย่างถูกต้องใช้ Project SDK ซึ่งตอนนี้เป็น 1.7


โปรดทราบว่ามี Project Settings และ Preferences สำหรับ Intellij บน Mac อย่างน้อยฉันต้องไปที่ Settings -> Build Exec, Deploy -> Java Compiler จากนั้นตั้งค่าเวอร์ชัน bytecode ของโครงการตามต้องการ
เปิดให้บริการ

1

เมื่อ maven ทำงานนอก Eclipse แต่ให้ข้อผิดพลาดนี้หลังจากการเปลี่ยนแปลง JDK ให้ไปที่ Maven Run Configuration และที่ด้านล่างของหน้าหลักจะมีตัวเลือก 'Maven Runtime' ของฉันใช้ Maven ในตัวดังนั้นหลังจากเปลี่ยนมาใช้มาเวนภายนอกของฉันมันก็ใช้งานได้


โปรดทราบว่า Maven Run Configuration อยู่ที่ไหน
R Claven

1
คลิกขวาที่ build.xml ของคุณไปที่ 'Run as' จากนั้น 'Run Configuration' ควรเป็นตัวเลือกสุดท้าย หากคุณเลื่อนดูประเภทของการกำหนดค่าการเรียกใช้หนึ่งคือ 'Maven Build' และมีตัวเลือกให้เลือก 'Maven Runtime' มีปุ่ม "กำหนดค่า" อยู่ข้างๆ
djb

0

สิ่งนี้อาจใช้งานได้หลายอย่าง แต่ก็ไม่เพียงพอสำหรับ Maven และไม่ใช่สำหรับปลั๊กอินคอมไพเลอร์ maven

ตรวจสอบคำตอบของ Mike สำหรับคำถามของเขาเองที่นี่: stackoverflow question 24705877

สิ่งนี้ช่วยแก้ปัญหาให้ฉันทั้งบรรทัดคำสั่งและภายใน eclipse

นอกจากนี้ @LinGao ตอบคำถาม stackoverflow 2503658และการใช้ตัวแปร $ JAVACMD อาจช่วยได้ แต่ฉันไม่ได้ทดสอบด้วยตัวเอง

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