การรวบรวมข้อผิดพลาดร้ายแรง: การปล่อยเป้าหมายที่ไม่ถูกต้อง: 1.8 -> [ความช่วยเหลือ 1]


170

ปัญหาที่คล้ายกันเช่นปัญหาที่โพสต์ในการปล่อยเป้าหมายที่ไม่ถูกต้อง: 1.7แต่หลังจากติดตามบล็อกปัญหาของฉันยังคงไม่ได้รับการแก้ไข

ล้มเหลวในการดำเนินการเป้าหมาย org.apache.maven.plugins: maven-compiler-plugin: 3.1: คอมไพล์ (คอมไพล์เริ่มต้น) ในโครงการ hm_app: การรวบรวมข้อผิดพลาดร้ายแรง: การปล่อยข้อผิดพลาดร้ายแรง: 1.8 -> [ช่วยเหลือ 1]

ฉันกำลังติดตามการสอนเมื่อฉันประสบปัญหานี้

abt java & mvn

C:\mvn>echo %JAVA_HOME% 
C:\mvn>echo %JRE_HOME%
C:\mvn>echo %MAVEN_HOME% yields

เอาท์พุท

C:\Program Files\Java\jdk1.7.0_51
C:\Program Files\Java\jre7
C:\apache-maven-3.0.4

3
... และคุณแน่ใจหรือว่าคุณติดตั้ง Java 8 ไว้ที่อื่น?
Makoto

ฉันมี x86, 64 java 7 และไม่มี java 8
rvd

3
ตกลง. เหตุใดคุณจึงพยายามรวบรวมโค้ด Java 8 ที่ไม่มีคอมไพเลอร์ Java 8
โกโตะ

@ Makoto ty สำหรับการมองปัญหาของฉันติดตั้ง java 8 แก้มันได้ .... คน ty :)
rvd

@Makoto ในที่สุดฉันก็ได้สิ่งที่คุณพูดว่า "โอเคแล้วทำไมคุณถึงพยายามรวบรวมโค้ด Java 8 โดยไม่ต้องคอมไพเลอร์ Java 8" ดังนั้นฉันเพิ่งเปลี่ยนไฟล์ pom.xml ของฉัน java.version> 1.8 </java.version> เป็น java.version> 1.7 </java.version> และฉันสามารถใช้ mvn คอมไพล์บน java7 ได้เช่นกัน
rvd

คำตอบ:


281

คุณตั้งค่า%JAVA_HOMEเป็น jdk 1.7 แต่คุณพยายามคอมไพล์โดยใช้ 1.8 ติดตั้ง jdk 1.8 และตรวจสอบให้แน่ใจว่า%JAVA_HOMEคะแนนของคุณไปที่นั้นหรือปล่อยเป้าหมายไปที่ 1.7

การปล่อยเป้าหมายที่ไม่ถูกต้อง: 1.8

การเปิดตัวเป้าหมายหมายถึงรุ่น jdk


7
อีกวิธีหนึ่งที่เป็นไปได้ในกรณีของฉันคือแก้ไขไฟล์ pom.xml java.version> 1.8 </java.version> เป็น java.version> 1.7 </java.version>
rvd

1
นั่นคือโดยเฉพาะที่ maven ค้นหาจาวาเวอร์ชัน อย่างมีประสิทธิภาพคุณเปลี่ยนเวอร์ชัน java เป็นเวอร์ชันที่คุณติดตั้งบน% JAVA_HOME ของคุณ
ช่วยให้รอด

2
สำหรับ mac ของฉันฉันจะส่งออก JAVA_HOME = /usr/libexec/java_home -v 1.8เพื่อตั้ง JAVA_HOME เป็นตำแหน่งที่เหมาะสมสำหรับ 1.8 JDK จัดหาเวอร์ชั่นที่คุณชื่นชอบแทนที่ 1.8 (มี backticks หลังจาก = และหลัง 8)
bruce szalwinski

ใช่ถูกต้องให้ฉัน ฉันเปลี่ยนเป็นคอมไพล์โปรแกรมดั้งเดิมที่รองรับ 1.7 เมื่อวานนี้เท่านั้น: D ขอบคุณ!
Davut Gürbüz

31

ใส่ค่าในปลั๊กอิน:

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

ข้อผิดพลาดที่ใช้:

<source>${java.version}</source>
<target>${java.version}</target>

2
ในกรณีของฉันวิธีแก้คือตั้งทั้งต้นทางและเป้าหมายเป็น 1.7
thinkhy

ฉันสามารถหาไฟล์นี้ในไฟล์อะไร
Yusril Maulidan Raji

21

ในกรณีของฉัน Maven "Run configuration" ใช้ JRE ผิด (1.7) อย่าลืมตรวจสอบRun -> Run Configurations -> (Tab) JREให้เป็น jdk1.8.x


เป็นจริงดังนั้นเราจึงมีสิ่งต่าง ๆ ให้ตรวจสอบในครั้งต่อไปหากเกิดข้อผิดพลาดนี้: JAVA_HOME, BUILD_Configuration, RUN_Configuration
Farhan

13

ปัญหาได้รับการแก้ไขเนื่องจากฉันมี JDK ที่ชี้ไปที่ 1.7 และ JRE ชี้ไปที่ 1.8 ตรวจสอบคำสั่งให้ฉันพิมพ์

java -version

และ

javac -version.

ทั้งสองควรจะเหมือนกัน  


5

สำหรับคราสนี่คือวิธีที่ฉันแก้ไขปัญหาของฉัน:

  1. การตั้งค่า -> คอมไพเลอร์ -> ระดับผู้ร้องเรียนของคอมไพเลอร์ ป้อนคำอธิบายรูปภาพที่นี่

  2. การตั้งค่า -> JRE ที่ติดตั้ง -> เลือก JAVA SE 8 1.8 ป้อนคำอธิบายรูปภาพที่นี่

  3. สร้างใหม่ผ่าน maven โดยใช้ Run เป็น maven build

ไม่ควรแสดงข้อผิดพลาดเป้าหมายที่ไม่ถูกต้องอีกต่อไป
หมายเหตุ: ฉันไม่ต้องตั้งค่าหรือเปลี่ยนแปลงตัวแปรอื่น ๆ ในเทอร์มินัลของฉัน หวังว่านี่จะช่วยได้


2

การวางสิ่งนั้นไว้ใน. profile ของคุณจะดูแลคุณแบบไดนามิก $JAVA_HOME

export JAVA_HOME=$(/usr/libexec/java_home)

ปิดเปลือกของคุณหลังจากนั้นเปิดใหม่และทดสอบด้วย

echo $JAVA_HOME

มันควรแสดงสิ่งที่ชอบ

/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home

หากไม่ใช่ให้ลบการมอบหมายอื่น ๆ ของ JAVA_HOME ในสคริปต์เริ่มต้นของคุณ โปรดจำไว้ว่าสคริปต์เริ่มต้นเหล่านี้เริ่มต้นด้วย.ดังนั้นจึงถูกซ่อนและจะไม่รวมเมื่อใช้*อักขระตัวแทนเช่นหากคุณต้องการ grep ไฟล์ทั้งหมดของโฮมไดเร็กตอรี่ของคุณคุณต้อง:

grep -s JAVA_HOME ~/.* --exclude=.bash_history

1

ปัญหาที่ฉันเผชิญคือฉันสามารถสร้าง maven build จาก command prompt แต่ไม่ได้มาจาก Eclipse สิ่งที่ทำงานได้สำหรับฉันใน eclipse คือฉันเปลี่ยนการกำหนดค่าการทำงานให้ชี้ไปที่โฟลเดอร์ JRE ภายใน JDK แทนที่จะปล่อยไว้ใน โฟลเดอร์ JDK เท่านั้นตามมาตรฐานวิธีการแก้ปัญหานี้อาจใช้ได้สำหรับคุณเช่นกัน แต่ลองใช้วิธีนี้หากเส้นทางของจาวาทั้งหมดนั้นถูกต้องจาวาและ javac จะแสดงเวอร์ชันเดียวกันกับที่ปรากฏในเป้าหมายของ pom.xml


นี่คือปัญหาและแนวทางแก้ไขของฉัน
Skychan

1

ฉันประสบปัญหานี้ในการปรับใช้ Dokku ด้วยเหตุผลบางอย่างที่เลือก JDK 1.7

การสร้างsystem.propertiesไฟล์และการตั้งค่าjava.runtime.version=1.8แก้ไขปัญหาได้ ตอนนี้ Dokku ใช้ Java เวอร์ชัน 8 การเลือก JDK บน Heroku

ฉันไม่เคยทำมาก่อน ...


คำใบ้ยังคงใช้งานได้ ฉันต้องค้นหาหลายอย่างเพื่อเปลี่ยนรุ่น Java ใน Dokku เป็น 11 ขอบคุณมาก
นาย Vanderbilt

1

ดังกล่าวโดย Camila Macedo - คุณจะต้องชี้รุ่น java สำหรับคอมไพเลอร์ - ปลั๊กอินอย่างชัดเจน สำหรับการบูทสปริงคุณสามารถทำได้โดยใช้คุณสมบัติถัดไป:

  <properties>
    <java.version>1.8</java.version>
    <maven.compiler.release>8</maven.compiler.release>
  </properties>

ใช่การตั้งค่าmaven.compiler.releaseแก้ไขในโครงการ Maven ของฉัน
Cortex

1

เมื่อใช้ IntelliJ ฉันต้องติดตั้ง JDK อีกเวอร์ชันหนึ่ง (ที่สูงกว่า) หลังจากรีสตาร์ท IDE ทุกอย่างทำงานและแม้กระทั่งการพึ่งพาทั้งหมดก็แก้ไขได้


1
การรีสตาร์ท intelliJ เป็นกุญแจสำคัญสำหรับฉัน ฉันอัปเดตตัวแปรสภาพแวดล้อมของ JAVA_HOME ให้ชี้ไปที่เวอร์ชันจาวาที่แตกต่างกัน แต่ปรากฏว่าตัวแปรระบบไม่รีเฟรชในเซสชัน CMD ที่มีอยู่ อาจเป็นไปได้ว่าจะเพียงพอที่จะสร้างเซสชัน Terminal ใหม่
Ubeogesh

0

คำถามนี้ไม่ได้ถามอย่างชัดเจนเกี่ยวกับ Docker แต่ฉันได้รับข้อผิดพลาดเดียวกันเมื่อฉันมีไฟล์ pom.xml ที่กำหนดเป้าหมาย 1.9 ...

<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <maven.compiler.source>1.9</maven.compiler.source>
  <maven.compiler.target>1.9</maven.compiler.target>
</properties>

... แต่แล้วพยายามเรียกใช้การทดสอบเทียบกับคอนเทนเนอร์ Docker โดยระบุ "maven" ด้วยตัวเอง

docker run -t --rm -v m2_repository:/root/.m2/repository -v $(pwd):/work -w /work maven mvn -e test

สำหรับฉันการแก้ไขคือกำหนดเป้าหมายเวอร์ชันที่แน่นอนที่ฉันต้องการ

docker run -t --rm -v m2_repository:/root/.m2/repository -v $(pwd):/work -w /work maven:3.5.2-jdk-9 mvn test

(คุณสามารถเรียนรู้เพิ่มเติมได้ที่นี่ )


0

บนเครื่อง Windows คุณสามารถตั้งค่าเวอร์ชัน Java ชั่วคราว
ตัวอย่างเช่นหากต้องการเปลี่ยนเวอร์ชันเป็น Java 8 ให้รันคำสั่งนี้บนcmd:

set JAVA_HOME=C:\\...\jdk1.8.0_65

0

ทำการอัปเดต Maven อย่างแรงซึ่งจะนำเวอร์ชั่น 1.8 Jar ที่ใช้งานร่วมกันได้ออกมาและในขณะที่สร้างให้อัปเดตเวอร์ชัน JRE ในสภาพแวดล้อม Execute เป็น 1.8 จากเรียกใช้การกำหนดค่าและกด RUN


0

หากคุณกำลังใช้ Eclipse IDE จากนั้นไปที่เมนูหน้าต่างและเลือกการตั้งค่าและให้คุณค้นหา JRE ที่ติดตั้งและเลือก JRE ที่คุณต้องการสร้างโครงการ


-4

สิ่งที่ทำงานในกรณีของฉันคือ:

ฉันเปิดpom.xmlและแทนที่หนึ่งในปลั๊กอินดังต่อไปนี้

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

ก่อนที่ฉันจะแก้ไขแท็กแหล่งที่มาและเป้าหมายทั้งสองมี 1.8ฉันก็เปลี่ยน1.7มันเป็นและใช้งานได้


คุณเข้าใจการเปลี่ยนแปลงที่คุณได้ทำไปหรือไม่หรือคุณเพิ่งทำการเปลี่ยนแปลงที่หวังไว้เพื่อสิ่งที่ดีที่สุด?
Popeye

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