หลังจากติดตั้ง Java JDK 7 สำหรับ Mac OS X - mvn -version ยังคงแสดง java เวอร์ชัน 1.6.0_31


117

Oracle เปิดตัว Java JDK 7 ในวันที่ 26 เมษายนสำหรับ Mac OS X ฉันทำตามคำแนะนำในการติดตั้งและเมื่อฉันทำ java -version ในหน้าต่างเทอร์มินัลฉันจะได้รับ:

java version "1.7.0_04"
Java(TM) SE Runtime Environment (build 1.7.0_04-b21)
Java HotSpot(TM) 64-Bit Server VM (build 23.0-b21, mixed mode)

อย่างไรก็ตามเมื่อฉันทำmvn -versionในหน้าต่างเทอร์มินัลฉันจะได้รับ:

Apache Maven 3.0.2 (r1056850; 2011-01-08 18:58:10-0600)
Java version: 1.6.0_31, vendor: Apple Inc.
Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Default locale: en_US, platform encoding: MacRoman
OS name: "mac os x", version: "10.7.3", arch: "x86_64", family: "mac"

ฉันจะทำให้ Maven ใช้ Java JDK 1.7.0_04 ได้อย่างไร

ขอบคุณสำหรับความช่วยเหลือ

คำตอบ:


126

ในที่สุดก็พบคำตอบที่นี่:

http://www.adam-bien.com/roller/abien/entry/java_se_development_kit_7

คุณควรใช้JAVA_HOME=$(/usr/libexec/java_home)แทนบน Mac จากนั้นตั้งค่า jdk ปัจจุบันผ่าน "Java Preferences.app"

ตั้งค่า JAVA_HOME ใน ~ / .profile


4
ฉันเพิ่งติดตั้ง Java 6 และฉันไม่สามารถค้นหา JavaPreferences.app bcz mac ได้ในขณะนี้ไม่ได้ให้การสนับสนุนสำหรับ Java บอกได้เลยว่าฉันจะตั้งค่า jvm โดยไม่ใช้ JavaPreferences ได้อย่างไร
amod

2
คุณยอมรับคำตอบของคุณเองได้ นั่นจะแสดงให้พวกเราที่เหลือทุกคนเห็นว่าสิ่งนี้แก้ปัญหานี้ได้ และคุณจะมีอีก 10
pont

5
ฉันเพิ่มไปที่ ~ / .bash_profile: export JAVA_HOME = $ (/ usr / libexec / java_home)
skytteren

1
หรือคุณสามารถ "ส่งออก JAVA_HOME = $ (/ usr / libexec / java_home -v 1.6)" ในภาพเดียวแทนที่จะเปลี่ยนโดยใช้ Java Preferences.app
mac

ไม่สามารถเปิด Java Preferences App ใน El Captian ได้ฉันไปจาก System Preferences -> Java
Wolf7176

34

ปัญหาคือลิงก์สัญลักษณ์ "CurrentJDK" ภายในเวอร์ชันของ JavaVm.framework ชี้ไปที่ jdk เก่าดังนั้นเมื่อฉันใช้คำสั่งต่อไปนี้เพื่อตั้งค่า CurrentJDK เป็นคำสั่งล่าสุด (1.7.0_45) มันก็ใช้ได้

cd /System/Library/Frameworks/JavaVM.framework/Versions
sudo rm CurrentJDK
sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents CurrentJDK

อ้างอิง: http://java.dzone.com/articles/installing-jdk-7-mac-os-x


ตรวจสอบให้แน่ใจว่าคุณระบุรุ่นที่ถูกต้องสำหรับjdk1.7.0_45.jdkฉันคือjdk1.7.0_51.jdk
ndequeker

1
ฉันสงสัยว่าทำไมนักพัฒนา Oracle ไม่ทำโดยอัตโนมัติ? มันไม่สำคัญสำหรับฉัน คำตอบนี้ช่วยวันของฉัน
Ivan Voroshilin

นี่ใช้ไม่ได้สำหรับฉัน ฉันอยู่บน el captian เวอร์ชัน java mvn ปฏิเสธที่จะเปลี่ยนแปลง JAVA_HOME ถูกต้อง
Wolf7176

17

หากต้องการค้นหาเส้นทางจาก Java Preferences ให้ลอง /usr/libexec/java_home -X

รายการ Java7 ของฉันมีลักษณะดังนี้:

<dict>
    <key>JVMArch</key>
    <string>x86_64</string>
    <key>JVMBundleID</key>
    <string>com.oracle.java.7u04.jdk</string>
    <key>JVMEnabled</key>
    <true/>
    <key>JVMHomePath</key>
    <string>/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home</string>
    <key>JVMIsBuiltIn</key>
    <false/>
    <key>JVMName</key>
    <string>Java SE 7</string>
    <key>JVMPlatformVersion</key>
    <string>1.7</string>
    <key>JVMVendor</key>
    <string>Oracle Corporation</string>
    <key>JVMVersion</key>
    <string>1.7.0_04</string>
</dict>

6
grrrrr ฉันทำอย่างนั้นและเส้นทางที่ระบุไว้สำหรับ jdk1.7 ของฉันไม่มีเลย :(
Dean Hiller

9

คุณต้องเปลี่ยนJAVA_HOMEตัวแปรสภาพแวดล้อมไปยังตำแหน่ง JDK 1.7 ใหม่

ดูคำถามนี้เพื่อหาตำแหน่งที่เป็นไปได้ที่อาจกำหนด JAVA_HOME ในเทอร์มินัลพิมพ์which javaเพื่อค้นหาเส้นทางของการติดตั้ง Java ของคุณจากนั้นอัปเดตJAVA_HOMEเพื่อชี้ไปที่เส้นทางนั้น (แต่ไม่รวมโฟลเดอร์ bin ต่อท้าย)


แน่ใจไหมว่าฉันต้องการสิ่งนั้นบน Mac OS X ฉันไม่เคยทำแบบนั้นมาก่อน หากฉันจำเป็นต้องตั้งค่า JAVA_HOME ฉันจะรู้ได้อย่างไรว่าจะใช้พา ธ ใดในการติดตั้ง Java JDK 7 ไม่ได้ให้ข้อมูลเส้นทางการติดตั้งใด ๆ และแอพยูทิลิตี้ Java Preference บน Mac ไม่แสดงพา ธ ไปยัง JDK 1.7
Bruce Phillips

หากคุณดูคำถามของคุณด้านบนคุณจะเห็นว่า JAVA_HOME ได้ถูกกำหนดไว้แล้วและปัจจุบันชี้ไปที่ 1.6 JDK รุ่นเก่า ฉันไม่คุ้นเคยกับวิธีเปลี่ยนตัวแปรสภาพแวดล้อมใน OSX แต่นี่คือสิ่งที่ Maven ใช้โดยค่าเริ่มต้น
เนท

ปัญหาคือโดยปกติการอัปเดตของ Apple จะอัปเดตเวอร์ชัน java และตั้งค่า JAVA_HOME การตั้งค่า JAVA_HOME ใน. bashrc ไม่ทำงานบน OS X เหมือนใน linux ยังไม่พบเส้นทางไปยัง JDK 7 ที่ Oracle ติดตั้งไว้ที่ไหน
Bruce Phillips

เนทคำถามของฉันไม่ซ้ำกับโพสต์ที่คุณเชื่อมโยง ฉันใช้ OS X และได้อัปเดตเป็น Java JDK 7 โดยใช้ Oracle install สำหรับ Mac OS X ซึ่งเพิ่งเปิดตัวเมื่อวันที่ 26 เมษายน
Bruce Phillips

ไม่มี Mac แทนที่จะเป็น. bashrc ใช้. bash_profile และคุณควรจะพบการติดตั้งภายใต้ / System / Library / Java / JavaVirtualMachines / ที่คุณต้องการชี้ไปที่ 1.7.0 Java เวอร์ชันใหม่ของคุณ
peter_budo

7

ในกรณีที่ใครก็ตามกำลังติดตั้ง Maven บน Mac 64 บิตที่ใช้ Mac OSX 'Mavericks' ช่วยตัวเองได้พอสมควรและมีผมบางส่วนที่พยายามจะติดตั้ง Maven ฉันพยายามทำตามสิ่งนี้ (ซึ่งล้มเหลวเนื่องจากตำแหน่งของ java_home มีการเปลี่ยนแปลงใน Mavericks:

http://maven.apache.org/download.cgi

ฉันดึงผมออกมาจนเจอเว็บไซต์นี้ซึ่งแนะนำให้คุณติดตั้ง homebrew และทำตามคำแนะนำในหน้านี้: http://techspunky.blogspot.in/2013/10/how-to-install-maven-on-mac -osx-109.html

เมื่อเสร็จสมบูรณ์อย่าตกใจเมื่อ $ maven -version ไม่ทำงานให้ใช้ $ mvn --version ตามที่แนะนำ maven.apache.org/download.cgi แทน

มันใช้งานได้ แต่ฉันสังเกตเห็นว่า Java SDK Maven ใช้อยู่คือเวอร์ชัน Java: 1.6.0_65 ซึ่งไม่ใช่ SDK ล่าสุดที่ฉันติดตั้งในระบบ

เมื่อฉันตั้งค่า JAVA_HOME =/usr/libexec/java_home

เป็นการใช้ SDK ที่ถูกต้อง: Maven home: /usr/local/Cellar/maven/3.1.1/libexec เวอร์ชัน Java: 1.7.0_45 ผู้จำหน่าย: Oracle Corporation Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_45 jdk / Contents / Home / jre ภาษาเริ่มต้น: en_US, การเข้ารหัสแพลตฟอร์ม: UTF-8 ชื่อระบบปฏิบัติการ: "mac os x", เวอร์ชัน: "10.9", arch: "x86_64", ตระกูล: "mac"

ที่ประสบความสำเร็จ! แต่เดี๋ยวก่อน ... ครั้งต่อไปที่ฉันเปิดเทอร์มินัลและรัน mvn -v มันกลับไปเป็น java เวอร์ชัน 1.6 WTH!

มันเป็นข้อผิดพลาดบางอย่างจากสิ่งที่ฉันอ่านใช้: echo JAVA_HOME = /usr/libexec/java_home -v 1.7| sudo ที -a / etc / mavenrc

และตอนนี้:

Maven home: /usr/local/Cellar/maven/3.1.1/libexec เวอร์ชัน Java: 1.7.0_45 ผู้จำหน่าย: Oracle Corporation หน้าแรก Java: /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre ภาษาเริ่มต้น: en_US, การเข้ารหัสแพลตฟอร์ม: UTF-8 ชื่อระบบปฏิบัติการ: "mac os x", เวอร์ชัน: "10.9", arch: "x86_64", ตระกูล: "mac"


export JAVA_HOME=`/usr/libexec/java_home`ทำงานได้ดีสำหรับฉันในการส่งออกตัวแปร JAVA_HOME อย่างถูกต้อง
cdeszaq

4

เหตุผลที่ Maven ยังคงใช้ Java 6 คือสคริปต์ / usr / bin / mvn ที่เปิดใช้งานไม่ได้ใช้วิธีการ OS / X ที่ถูกต้องในการแก้ไขเวอร์ชัน Java ปัจจุบันตามที่ระบุใน Java Preferences ดูปัญหา Maven นี้สำหรับรายละเอียด:

http://jira.codehaus.org/browse/MNG-4226

การลงคะแนนอาจทำให้ได้รับการแก้ไข ในระหว่างนี้หากคุณแก้ไขสคริปต์ / usr / bin / mvn ตามที่แสดงในความคิดเห็นและการแก้ไขปัญหานั้นคุณจะได้ผลลัพธ์ที่ต้องการ


2

ตกลงบนเครื่องของฉัน ใช่ตัวติดตั้ง Oracle ไม่ได้ทำงานอย่างแน่นอนและทำให้ฉันสับสนไม่สิ้นสุดหลังจากที่ 1.6 ยังคงทำงานอยู่

java run time was updated 

java -version
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)

แต่ SDK HOME เป็นลิงค์ซิมที่ยังชี้ไปที่ 1.6

/Library/Java/Home ใน Finder GetInfo ชี้ไปที่ /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

ใน Terminal

./Home -> /System/Library/Frameworks/JavaVM.framework/Home

ไปคิด

ฉันพบ 1.7 ที่นี่และฉันกำลังใช้สิ่งนั้นเพื่อสร้างกับ: /Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home


0

ฉันคิดว่าปัญหาส่วนหนึ่งเกิดจากกลไกการเปิดใช้ java ฉันสามารถรับ Eclipse เพื่อรันโค้ดของฉันภายใต้ Java7 ได้ แต่ฉันคิดว่า eclipse ยังคงทำงานภายใต้ Java6 นอกจากนี้ฉันมีโปรแกรม java ที่คอมไพล์ล่าสุดเมื่อปีที่แล้วและสร้างโดยใช้ jarbundler-2.1.0.jar (พร้อมตัวเลือก jvmversion = "1.6+") เมื่อฉันดับเบิลคลิกที่ไฟล์. app มันจะเรียกใช้ Java6 แต่เมื่อฉันดับเบิลคลิกที่ไฟล์. jar ใน. app มันจะเรียกใช้ Java7

นอกจากนี้ฉันไม่ได้ใช้ JAVA_HOME แต่ฉันยังคงได้รับเวอร์ชันจาวาที่ถูกต้อง "1.7.0_04" ที่แสดงในคำถาม JAVA_HOME น่าจะเป็นปลาเฮอริ่งแดง บางที Maven อาจต้องการ แต่ Eclipse ดูเหมือนจะไม่ใช้และไม่เปิดไฟล์ jar

และหลังจากตั้งค่า Java7 ในเครื่องมือ Java Preferences ดูเหมือนว่าจะไม่มีผลกับการเรียกใช้ไฟล์ java .app อย่างไรก็ตามมันทำให้ 'java -version' จากเทอร์มินัลทำงานได้ดี ฉันพยายามยกเลิกการเลือกทุกอย่าง แต่ตัวเลือก Java7 จากนั้น Eclipse จะไม่ทำงานเลย


0

หาก JAVA_HOME ของคุณอยู่ที่ bash ของผู้ใช้ในเครื่อง mvn จะเลือกเวอร์ชันจาวาปัจจุบันของระบบไม่ว่าคุณจะตั้งค่า JAVA_HOME ไว้ที่ใดก็ตาม

ดังนั้นก่อนอื่นให้เรียกใช้คำสั่ง ' ซึ่ง mvn ' และตรวจสอบว่าคุณใช้ mvn ที่ปฏิบัติการได้ใด หลังจากนั้นแก้ไขไฟล์ mvn นั้นและเปลี่ยนตัวแปรJAVA_HOMEเป็น java home ที่คุณต้องการ

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