ติดตั้ง Java 7 บน Mac OS X แล้ว แต่ Terminal ยังใช้เวอร์ชัน 6 อยู่


391

ฉันติดตั้ง JDK 7u7 ที่ดาวน์โหลดจากเว็บไซต์ของ oracle แต่หลังจากการติดตั้งเทอร์มินัลยังคงแสดง java เวอร์ชัน 6

$java -version
java version "1.6.0_35"
Java(TM) SE Runtime Environment (build 1.6.0_35-b10-428-11M3811)
Java HotSpot(TM) 64-Bit Server VM (build 20.10-b01-428, mixed mode)

ความคิดใดว่าทำไม java 7 ไม่ปรากฏขึ้น?

ตอบ: ตกลงปัญหาได้รับการแก้ไขแล้ว นี่คือคำตอบ: ฉันพบว่าเทอร์มินัลของฉันมี. bash_profile และตัวแปร home java ถูกตั้งค่าเป็น 1.6

export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home"

นี่คือบรรทัดที่ทำให้เกิดปัญหาทุกครั้งที่ฉันเปิดหน้าต่างเทอร์มินัลใหม่ เพียงแค่ลบบรรทัดนี้จะแก้ปัญหา คุณยังคงต้องทำตามสิ่งที่ @aleroot พูด แต่ถ้าวิธีนี้ไม่ได้ผลสำหรับคุณให้ตรวจสอบไฟล์การตั้งค่า. bash_profile (หรือ. bashrc) เพื่อดูว่าคุณได้ส่งออกจาวาเวอร์ชันใด ๆ ก่อนหน้านี้หรือไม่


23
ฉันมีปัญหานี้ แต่ฉันเพิ่งอัปเดต JRE ไม่ใช่ JDK เมื่อฉันอัปเดต JDK มันแสดงรุ่นที่ถูกต้อง
พอล Maserrat

ย้ายข้อมูลนี้ไปถามที่แตกต่างกันไหม
Nakilon

14
เพียงแค่ให้ความสนใจเป็นพิเศษต่อความคิดเห็นของ @ Mazzy นั่นเป็นข้อผิดพลาดที่ทำได้ง่าย การดาวน์โหลด JRE v7 จะทำให้รุ่น 7 ปรากฏขึ้นเมื่อรันตัวตรวจสอบเวอร์ชั่นออนไลน์หรือสิ่งที่แผงควบคุม Java แต่เมื่อเรียกใช้จาวาจากบรรทัดคำสั่งคุณจะใช้เวอร์ชั่นเก่ากว่าจาก JDK ที่ติดตั้งไว้ก่อนหน้านี้ ดังนั้นตรวจสอบอีกครั้งเพื่อให้แน่ใจว่าคุณติดตั้ง JDK ไม่ใช่ JRE
แคมแจ็กสัน

1
วิธีที่ดีที่สุดในการแก้ปัญหานี้คือการใช้export JAVA_HOMEวิธีการดังกล่าวโดยมีรายละเอียดในวิธีที่ยืดหยุ่นกว่าเล็กน้อย
Brad Parks

5
ฉันขอเน้นเรื่องนี้ด้วยตัวอักษรพิมพ์ใหญ่: คนจำนวนมากที่อยู่บนหน้านี้จะต้องดาวน์โหลดและติดตั้ง JDK ล่าสุด แผงควบคุม JAVA จะอัปเดต JRE เท่านั้น
Walter Tross

คำตอบ:


64

เนื่องจากคุณต้องป้อนในบานหน้าต่าง Java Preferences และตั้งค่าสถานะเฉพาะ JVM 7 ด้วยวิธีนี้:

การตั้งค่า Java

เพื่อเปิดบานหน้าต่างการตั้งค่า Javaอย่างง่ายและรวดเร็วใน Mac OS X คุณสามารถเรียกสปอตไลท์ด้วย+SPACEและพิมพ์การตั้งค่าระบบมันจะปรากฏในแถวสุดท้ายของหน้าต่าง


3
ใช่พบแล้ว แต่ยังคงเป็นเวอร์ชั่น 1.6 ในเทอร์มินัลฉันจำเป็นต้องรีบูทหรืออะไรบางอย่าง
Yang

1
แผงนี้ไม่มีอยู่ใน 10.8 อีกต่อไป ทางเลือก?
Pepijn

68
@Pepijn panale เป็นประวัติศาสตร์ตั้งแต่ Mac OSX 10.8.2 และไม่จำเป็นต้องใช้อีกต่อไป คุณต้องใช้export JAVA_HOME=`/usr/libexec/java_home -v 1.7`เพื่อเปลี่ยนเป็น Java 7 JDK ล่าสุดจาก Oracle แทน
Uwe Günther

23
ฉันคิดว่าพวกเขากำจัดการตั้งค่า Java ในบางจุด ไม่พบ Spotlight บนกล่องของฉัน ทำงาน 10.8.5
quickshiftin

1
คุณสามารถค้นหาตำแหน่งที่แน่นอนของ JAVA_HOME ภายใต้ -> การตั้งค่าระบบ -> java คลิกแท็บ "Java" คลิกดู ตัวแปร Path แสดง JAVA_HOME ของคุณ (tile / Home)
agaase

298

ของออราเคิล Java /Library/Internet Plug-Ins/JavaAppletPlugin.pluginติดตั้งทำให้ภายใน /usr/bin/javaและมันก็ไม่ได้เขียนทับ ดังนั้นหากคุณออก

whereis java

ในเทอร์มินัลมันจะส่งคืน / usr / bin / java (ซึ่งจะชี้ไป/System/Library/Frameworks/JavaVM.framework/Versions/A/Commands/javaที่ซึ่งเป็นรุ่น 1.6 ของ Apple)

ดังนั้นหากคุณต้องการใช้จาวาเวอร์ชันใหม่ให้แทนที่/usr/bin/javasymlink เพื่อให้ชี้ไปที่/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/javaแทน:

sudo rm /usr/bin/java
sudo ln -s /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java /usr/bin

22
นี่คือคำสั่ง: sudo ln -s / Library / Internet \ Plug-Ins / JavaAppletPlugin.plugin / เนื้อหา / หน้าแรก / bin / java / usr / bin
Binarian

11
คำสั่งของ Viktor ทำงาน แต่คุณอาจต้องแน่ใจว่าคุณลบ java symlink ที่มีอยู่ออกไปด้วยrm /usr/bin/java
Matt Florence

7
จนกว่าผู้คนในออราเคิลจะปรับปรุงกระบวนการนี้ต่อไปนี้เป็น HOWTO ของกระบวนการทั้งหมดของการติดตั้งจาวาบนระบบ osx จนถึงขั้นตอนนี้รวมถึงขั้นตอน symlink สุดท้าย: gist.github.com/johan/10590467
ecmanaut

61
ฉันได้รับrm: /usr/bin/java: Operation not permitted
Aditya

37
หรือexport PATH="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH"
มิก

114

ติดตั้งJDK 7และปัญหานี้จะแก้ไขเอง

ตรวจสอบให้แน่ใจว่าได้รับ Java Development Kit (JDK) ซึ่งรวมถึงคอมไพเลอร์และเนื้อหาเช่นนั้นแทนที่จะเป็นเพียง Java Runtime Environment (JRE)


7
ติดตั้ง JDK แบบเต็มไม่เพียง แต่ JRE
BrainO2

5
-1 มันไม่ได้ช่วยอะไร การติดตั้งของ JDK ไม่เปลี่ยนแปลงมิได้/usr/bin/java JAVA_HOMEแต่การตั้งค่าความJAVA_HOMEช่วยเหลือ
Andrii Nemchenko

3
ยืนยันว่าตกลงใน OSX 10.9.4 มันไม่เปลี่ยนลิงก์ / usr / bin แต่จะเปลี่ยนสิ่งที่อยู่ข้างใต้ ดังนั้น /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java # But: /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java -version java version "1.7.0_67"
Joe Atzberger

1
ยังทำงานกับ JDK 1.8 - (ติดตั้ง JDK 1.8 แทน JRE 1.8)
Mark Chackerian

ฉันพยายามติดตั้ง Java 1.8 แต่นั่นไม่ได้ผลกับ El Capitan การติดตั้ง 1.7 แก้ปัญหาของฉันได้
SPRBRN

104

vi ~/.bash_profile

เพิ่ม

export JAVA_HOME=`/usr/libexec/java_home -v 1.7`

สิ่งนี้จะบอก/usr/bin/javaเป้าหมายการเชื่อมโยงของคุณเพื่อใช้แพ็คเกจ Java 7 ล่าสุดที่ติดตั้ง

/Library/Java/JavaVirtualMachines/

ดังนั้นสำหรับ JDK 1.7.0_17 JAVA_HOMEจะเป็น:

/Library/Java/JavaVirtualMachines/jdk1.7.0_17.jdk/Contents/Home

หมายเหตุ: มีการเปลี่ยนแปลงมากมายในพื้นที่นี้เมื่อเร็ว ๆ นี้เพื่อย้าย Mac OS X จากแพคเกจ Java ที่รวมอยู่ในระบบของ Appels ไปยัง Java Packages ที่ใช้ Oracle วิธีการแก้ปัญหาดังกล่าวทำงานได้ดีเหมือน Mac OS X 10.8.2


4
+1 สำหรับคำตอบนี้ซึ่งเป็น imo ที่ถูกต้องเพราะใช้ได้กับเวอร์ชันของ Mac OS ก่อนและหลัง 'Java Preferences' ถูกลบและแสดงตัวเลือก "-v" มันแสดงให้เห็นว่าคุณสามารถใช้ java 6 ได้อย่างไรแม้ว่า java 7 ติดตั้งแล้ว (ซึ่งเป็นสิ่งที่ฉันต้องการ) ดังนั้นใน Mac ของฉันใช้ Lion (10.7.5) ฉันใช้คำสั่งเดียวกันกับ "-v 1.6" สิ่งนี้สำคัญมากเพราะฉันต้องการ Java 6 และ Oracle ไม่ได้จัดเตรียมหนึ่งสำหรับ Mac OS - เฉพาะ Java 7 และสิ่งนี้ทำให้ฉันสามารถใช้ JAva 6 ที่ติดตั้งแม้ว่า Java 7 จะถูกติดตั้งแล้ว
รูบาร์บ

1
นอกจากนี้เพื่อให้มีความยืดหยุ่นมากขึ้น: mikemainguy.blogspot.com/2014/11/…
Mainguy

ข้อมูลเพิ่มเติมสามารถดูได้ที่นี่สำหรับคำตอบที่ยอดเยี่ยมนี้!
Brad Parks

สิ่งนี้ใช้ได้กับฉันใน Sierra 10.12 หลังจากติดตั้ง 1.8 JKD การส่งออกทำงานโดยเปลี่ยน 1.7 เป็น 1.8 คำตอบที่ยอดเยี่ยมในการใช้ยูทิลิตี java_home !!
Scott Byers

56

ในกรณีของฉันปัญหาคือว่า Oracle ติดตั้งในตำแหน่งอื่นนอกเหนือจากที่ฉันคุ้นเคย

ดาวน์โหลดจาก Oracle: http://java.com/th/download/mac_download.jsp?locale=th

  1. ตรวจสอบว่าติดตั้งอย่างถูกต้องโดยดูใน System Prefs:

    • Command-Space เพื่อเปิด Spotlight พิมพ์ 'System Preferences' กด Enter
    • คลิกที่ไอคอน Java ในแถวด้านล่าง หลังจากแผงควบคุม Java เปิดขึ้นให้คลิกแท็บ 'Java', 'ดู ... ' และตรวจสอบว่าการติดตั้งของคุณทำงาน คุณสามารถเห็น 'เส้นทาง' ที่นั่นซึ่งคุณสามารถย่อยลงในคำสั่งด้านล่างในกรณีที่พวกเขาแตกต่างจากของฉัน
  2. ตรวจสอบว่ารุ่นเป็นไปตามที่คุณคาดหวัง (ย่อยในเส้นทางของคุณตามต้องการ):

    / Library / Internet \ Plug-Ins / JavaAppletPlugin.plugin / เนื้อหา / หน้าแรก / bin / java -version

  3. สร้างลิงค์จาก / usr / bin / java ไปยังการติดตั้งใหม่ของคุณ

    sudo ln -fs / ไลบรารี / อินเทอร์เน็ต \ ปลั๊กอิน / JavaAppletPlugin.plugin / เนื้อหา / หน้าแรก / bin / java / usr / bin / java

  4. สติตรวจสอบรุ่นของคุณ:

    java -version


ทำงานให้ฉันเช่นกันฉันก็ลองคำอธิบายอื่น ๆ แต่ด้วย Maverix ไม่มีแผงที่คุณสามารถเลือกหมายเลขรุ่นและการเปลี่ยน. bash_profile ไม่ทำงาน ที่สมบูรณ์แบบ!
Alex Cio

Eclipse ไม่เห็น 1.7 ภายใต้คอมไพเลอร์
Laser Hawk

ทำงานให้ฉัน! ก่อน = 1.6.0_65 และหลังจากใช้โซลูชันนี้ = 1.7.0_60 .... ขอบคุณ! :)
คณิตศาสตร์

แต่ eclipse ให้ข้อผิดพลาดเหมือนยัง 'ไลบรารีที่ใช้ร่วมกันของ jvm ไม่มีสัญลักษณ์ jni_createjavavm' .... :(
maths

1
ขอบคุณสำหรับความช่วยเหลือ! ไม่มีอะไรทำงานยกเว้นสิ่งนี้ ใช้งานโยเซมิตี
LordZardeck

33

ฉันพบปัญหาที่คล้ายกันกับเทอร์มินัลไม่อัปเดตเวอร์ชัน java เพื่อให้ตรงกับรุ่นที่ติดตั้งบน mac

ไม่มีปัญหากับการตั้งค่าตัวแปรสภาพแวดล้อม JAVA_HOME

ฉันคิดวิธีแก้ปัญหาชั่วคราวและเจ็บปวด แต่ใช้งานได้

ใน. bash_profile ของคุณเพิ่มบรรทัด:

export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.7.0_11.jdk/Contents/Home"

(นี่คือเส้นทางบนเครื่องของฉัน แต่อาจแตกต่างกับของคุณตรวจสอบให้แน่ใจว่าจะได้รับของคุณเส้นทางควรตรงกับ / Library / Java / JavaVirtualMachines /)

วิ่ง source ~/.bash_profile

อย่างที่ฉันได้กล่าวไปแล้วว่านี่เป็นวิธีแก้ปัญหาสำหรับแบนด์วิดท์ชั่วคราวเนื่องจากเส้นทางของจาวาโฮมกำลังถูกกำหนดไว้อย่างหนัก ไม่มีทางที่จะตั้งค่าพา ธ เพื่อรับข้อมูลล่าสุดได้เนื่องจากเป็นสิ่งที่ Apple คาดว่าจะทำกับเทอร์มินัลแล้วและปัญหาคือตัวแปรสภาพแวดล้อม java_home ของ Apple ไม่ได้รับการอัปเดต


4
ไดเรกทอรีว่างเปล่า $ LS / Library / Java / JavaVirtualMachines /
Pepijn

1
คุณอาจจะมีปัญหากับที่คุณติดตั้ง Java 7. โปรดไปที่เว็บไซต์ของออราเคิล คลิกที่ลิงก์ "Java SE Development Kit 7u11" ยอมรับข้อตกลงสิทธิ์การใช้งานและดาวน์โหลด "jdk-7u11-macosx-x64.dmg" ใช้ dmg เพื่อติดตั้ง Java 7 และสิ่งนี้ควรใส่ไว้ในไดเรกทอรี JavaVirtualMachines ของคุณ
ดีเร็ก

นี่คือทางออกหนึ่งของ Mojave 10.14.1 ในต้นปี 2562
บิตและ

27

ตั้งแต่ El Capitan มันเป็นการยากที่จะลบ/usr/bin/javasymlink เนื่องจากการแนะนำของนโยบาย "rootless" ใหม่

ดังนั้นฉันเพียงแค่เพิ่มเส้นทางไปยังเวอร์ชัน java ล่าสุด (ในกรณีนี้คือ/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin) PATHใน.bashrcไฟล์ของฉัน:

# Use latest java version
export PATH=/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH

หากต้องการโหลด.bashrcไฟล์ซ้ำสำหรับเซสชันปัจจุบันให้รันsource ~/.bashrcในเชลล์ คุณต้องทำเช่นนี้สำหรับเซสชันที่เริ่มต้นขึ้นก่อนที่จะเปลี่ยน.bashrcไฟล์

ตอนนี้จะใช้เวอร์ชันล่าสุดเมื่อคุณใช้javaในเชลล์


1
วิธีแก้ปัญหาเฉพาะนี้ใช้ได้กับฉันใน mac os x el capitan ของฉัน ฉันไม่ได้ข้ามการตั้งค่าความปลอดภัยบน el capitan แต่ติดตั้ง java เวอร์ชัน 1.8 การเอ็กซ์พอร์ต JAVA_HOME = / พา ธ เฉพาะของฉัน ฯลฯ / ไม่ทำงาน (หลังจากไปที่การกำหนดค่าตามความชอบและค้นหาพา ธ ไปที่ 1.8) โปรดทราบว่า 1.6 ยังคงติดตั้งอยู่ ฉันต้องสร้างไฟล์. bashrc และกำหนดเส้นทางตามที่อธิบายไว้ที่นี่ ฉันรัน java -version และ shazzam! มันทำงานได้
umbregachoong

ฉันต้องการให้สิ่งนี้ทำงานได้ในขณะที่ฉันอยู่บน El Capitan และไม่สามารถรับฟังก์ชั่นอื่น ๆ ได้ ฉันสร้างไฟล์ '.bashrc' และเพิ่มบรรทัดข้างต้น แต่ถ้าฉันพิมพ์ 'java -version' ฉันยังได้รับ 1.6 อะไรที่ฉันอาจจะมองข้าม
noLongerRandom

@ user3810073 บางทีคุณจำเป็นต้องเรียกใช้source .bashrcเพื่อโหลดเนื้อหาของ. bashrc อีกครั้ง
TabeaKischka

ทำงานให้ฉัน ฉันเพิ่มบรรทัดลงใน. bash_profile (ในโฮมไดเร็กทอรีของผู้ใช้ของฉัน) จากนั้นแหล่งที่มา. bash_profile จากนั้น java -version ให้ฉันเวอร์ชันล่าสุด ขอบคุณ!
mrmuggles

นอกจากนี้ยังสามารถทำได้โดยการ symlinking ไป/usr/local/binเช่นนี้ sudo ln -sf "/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java" /usr/local/bin/java ที่สมมติว่า/usr/local/binเป็นก่อน/usr/binในของคุณ$PATHที่ควรจะเป็นตามค่าเริ่มต้น
lifeofguenter

21

สำหรับฉันวิธีที่ง่ายที่สุดและสะอาดที่สุดคือการติดตั้ง Java โดยใช้ homebrew ตามที่อธิบายไว้ที่นี่:

https://stackoverflow.com/a/28635465

brew update
brew cask install java

ทางออกที่ง่ายและสะอาด! ทำงานเหมือนจับใจ
ราหุลชุคละ

2
นี่เป็นทางออกเดียวที่อัพเดตทั้ง java และ javac ขอบคุณ!
ldanilek

ทำงานเหมือนมีเสน่ห์ :) ขอบคุณมาก
โมฮาเหม็ดซาเลห์

สิ่งนี้จะติดตั้งจาวารุ่นใหม่ล่าสุดไม่ใช่ Java7
Ivo

13

ปัญหาพื้นฐาน: /usr/bin/javaชี้ไปที่หนึ่งที่ให้บริการโดย OSX เองในตอนแรก ( /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java) เราจำเป็นต้องชี้เรื่องนี้ไปยังสิ่งที่ดาวน์โหลดโดยตัวติดตั้ง JDK ขั้นตอนด้านล่างสำหรับ OSX 10.10.4 Yosemite

  • เปิดการตั้งค่าระบบ -> เลือก Java หน้าต่าง Java จะเปิดขึ้น
  • คลิกที่แท็บ Java ที่ด้านบน คลิกที่ปุ่ม 'ดู'
  • แท็บการตั้งค่าสภาพแวดล้อม Java Runtime เปิดขึ้นดังต่อไปนี้: แท็บการตั้งค่า JRE
  • ดับเบิลคลิกที่Pathรายการและคัดลอกเส้นทาง (cmd + c) นี่เป็นไฟล์ล่าสุดที่ติดตั้งโดยตัวติดตั้ง / ตัวอัปเดต JDK ในกรณีของฉันเส้นทางคือ/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java
  • เปิดเทอร์มินัล ในขั้นตอนนี้เราจะไปที่จุด (symbolic link, ln -scommand) system java binary ไปยังล่าสุดซึ่งเราค้นพบในขั้นตอนก่อนหน้า เรียกใช้คำสั่งด้านล่าง:

sudo ln -s /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java /usr/bin/java

แค่นั้นแหละ. ในการตรวจสอบคุณสามารถรัน java -version บนเทอร์มินัลได้ ควรส่งออกเวอร์ชันล่าสุดที่คุณติดตั้ง / อัปเดตเป็น


2
ใช้งานได้สำหรับฉันยกเว้นว่าฉันต้องเพิ่มคำสั่ง -f to ln มิฉะนั้นหากล้มเหลวด้วย ln: / usr / bin / java: มีไฟล์อยู่
Dale

ในกรณีของฉันฉันจะใช้usr/local/binแทนusr/binคำสั่งเทอร์มินัล
iAkshay

ฉันได้รับ "การดำเนินการไม่ได้รับอนุญาต"
Shardul

การได้รับเส้นทางในลักษณะนี้เหมาะ ฉันสามารถส่งออกและโหลด bashrc อีกครั้งเพื่อแก้ไขปัญหารุ่น ในกรณีของฉันฉันกำลังโยกย้ายจากรุ่น 7 ถึง 8 ใน Mojave 10.14.1
bitsand

12

คุณสามารถดำเนินการคำสั่งต่อไปนี้ใน terminal ของคุณ:

export PATH="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH"

และสิ่งนี้จะแทนที่จาวาเก่าด้วยอันใหม่


1
มันแปลก ๆ มาแทนที่ แต่ถ้าฉันปิดเทอร์มินัลแล้วเปิดอีกครั้งมันจะแสดงเวอร์ชั่นที่เก่ากว่าอีกครั้ง
Parth Patel

นั่นเป็นเรื่องจริง ช่างโง่เหลือเกิน วิธีแก้ปัญหาชั่วคราวมาก
ผู้ใช้

1
เพิ่มลงในไฟล์. bashrc เพื่อให้เป็นไฟล์source ~/.bashrcถาวร
Azimjon Ilkhomov

10

ฉันทำ

export JAVA_HOME=`/usr/libexec/java_home`

และนั่นแก้ไขปัญหา Java 8 ของฉัน

ก่อน:

java version "1.6.0_31"
Java(TM) SE Runtime Environment (build 1.6.0_31-b04)
Java HotSpot(TM) 64-Bit Server VM (build 20.6-b01, mixed mode)

หลังจาก:

java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.5-b02, mixed mode)

1
/usr/libexec/java_homeเป็นตัวบ่งชี้ที่ดีมากขอบคุณ!
Raffi

1
ทำงานให้ฉันหลังจากอ่านคำตอบที่เป็นไปได้มากมาย! ขอบคุณ :)
ronnyrr

7

http://www.java.com/th/download/faq/java_mac.xmlเป็นสถานที่ที่ดีที่จะเข้าใจในขณะที่ Apple กำลังหยุดการสนับสนุน Java ทำไมการตั้งค่า Java ไม่อยู่อีกต่อไปและพึ่งพา System_Preferences => Java = > Java หากติดตั้ง Java 7 จาก Oracle


2
นี่เป็นข้อมูลที่ดี แต่คุณควรให้รายละเอียดมากกว่าลิงค์ หากลิงก์เสียในอนาคตคำตอบของคุณจะไม่มีประโยชน์จริงๆ
psubsee2003

7

ฉันขอแนะนำให้คุณดูเครื่องมือJenv ได้ไหม

สิ่งนี้จะอนุญาตให้คุณสลับได้ตลอดเวลาระหว่าง JVM ที่ติดตั้งของคุณ

เพียงแค่เป็น:

jenv global oracle-1.7

จากนั้นจึงทำการทดสอบในภายหลัง:

jenv global oracle-1.6

และคุณมีคำสั่งเพิ่มเติมอีกมากมาย


+1 สำหรับคำตอบนี้เนื่องจากคุณสามารถใช้ Homebrew หากคุณใช้อยู่ในระบบ OS X ของคุณแล้ว ฉันสะอาดกว่าคนอื่นมาก ข้อมูลเพิ่มเติมที่นี่: jenv.be
piku

6

การเข้ารหัสเส้นทาง JAVA_HOME อย่างหนักอาจไม่ใช่ความคิดที่ดีที่สุด /usr/libexec/java_homeยูทิลิตี้งัวงานสำหรับฉันใน Mac OSX Lion 10.7.5 และ JDK 1.7.0_13 ตามหน้า man มันมีไว้เพื่อใช้กับบานหน้าต่าง Java Preferences แบบเก่าของ Apple แต่ดูเหมือนว่าจะทำงานกับการแทนที่ที่ได้รับจาก Oracle (Java Control Panel) ตัวอย่างเช่นการรัน/usr/libexec/java_home -Vจะแสดงรายการ JDK ที่ติดตั้งทั้งหมด (ทั้ง 1.6. * และ 1.7. *) บนเครื่องของฉัน

ดังนั้นตามที่กล่าวไว้ในหัวข้ออื่น ๆ (เช่นฉันควรตั้งค่า JAVA_HOME เป็นบน OSX ) ฉันยังคงแนะนำให้เพิ่มบรรทัดต่อไปนี้ใน. bash_profile ของคุณ:

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

ฉันจะเห็นด้วยกับความคิดเห็นของคุณที่นี่เพราะเป็นวิธีปฏิบัติที่ดีที่สุด แต่ด้วยเหตุผลบางอย่างตัวแปรสภาพแวดล้อม java_home ไม่ได้ถูกตั้งค่าอย่างถูกต้องซึ่งเป็นสาเหตุที่สิ่งนี้ไม่ทำงาน ฉันเชื่อว่าการอัปเดตล่าสุดของ Apple ข้อเสนอแนะของคุณคือการดำเนินการเริ่มต้นสำหรับ JAVA_HOME ในเทอร์มินัลและแอปพลิเคชันอื่น ๆ ที่เกี่ยวข้องโดยค่าเริ่มต้น
Derek

@Derek คุณหมายถึงอะไรใน "ตัวแปรสภาพแวดล้อม java_home ไม่ได้ตั้งค่าอย่างถูกต้อง"? ตามบทความนี้/usr/libexec/java_homeยูทิลิตี้จะหมายถึงการได้ร่วมงานยังมี Java 7 รุ่นและจะส่งกลับเส้นทางไปมากที่สุด up-to-date JDK ติดตั้ง มันทำงานบนเครื่องของฉันได้อย่างสมบูรณ์แบบ
zagyi

1
ใช่มันควรจะทำงาน แต่ก็ไม่ได้สำหรับคนที่มีปัญหาที่ pepijin ได้กล่าวถึง
ดีเร็ก

6

นี่คือถั่ว! Oracle ให้บริการตัวติดตั้งที่ไม่ได้ติดตั้งอะไร!

อย่างไรก็ตามสำหรับฉันมันเป็น:

sudo rm /usr/bin/java
sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home/jre/bin/java /usr/bin/java

โดยที่ 1.8.0_31 เป็นเวอร์ชันจาวาที่คุณติดตั้ง ...


ทำไม Apple ไม่ให้วิธีการที่เหมาะสม?
jwilleke

6

ในกรณีที่คุณมี Java เวอร์ชันต่าง ๆ บนเครื่องของคุณและคุณต้องการที่จะเลือกแบบไดนามิก ณ รันไทม์, ในกรณีของฉัน, ฉันมีสองเวอร์ชัน:

ls -la /Library/Java/JavaVirtualMachines
drwxr-xr-x  3 root  wheel    96B Nov 16  2014 jdk1.7.0_71.jdk/
drwxr-xr-x  3 root  wheel    96B Mar  1  2015 jdk1.8.0_31.jdk/

คุณสามารถเปลี่ยนแปลงได้โดยแก้ไขเนื้อหา / etc / profile เพียงเพิ่ม (หรือแก้ไข) สองบรรทัดต่อไปนี้ที่ท้ายไฟล์:

export JAVA_HOME=YOUR_JAVA_PATH/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH

ในกรณีของฉันมันควรเป็นดังต่อไปนี้ถ้าฉันต้องการใช้:

Java 7:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH

Java 8:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH

หลังจากบันทึกไฟล์โปรดเรียกใช้ source /etc/profileและควรใช้งานได้ นี่คือผลลัพธ์เมื่อฉันใช้ตัวเลือกที่หนึ่งและสองตามลำดับ:

Java 7:

java -version
java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)

Java 8:

java -version 
java version "1.8.0_31"
Java(TM) SE Runtime Environment (build 1.8.0_31-b13)

กระบวนการนี้คล้ายกันหากโฟลเดอร์ java ของคุณอยู่ในสถานที่ต่างกัน


5

ทางออกที่ง่าย

export PATH="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH"

น่ากลัว วิธีนี้ทำให้วันของฉัน ขอบคุณมาก Mick
ผู้ใช้

3

ฉันคิดว่าคุณสามารถลองติดตั้ง jdk ไม่ใช่ jre โดยการติดตั้ง jdk จาวาใน / usr / bin / java จะถูกแทนที่และไลบรารีทั้งหมดจะทำงานได้ดี


3

หากคุณติดตั้ง Homebrew คุณสามารถติดตั้งjava-switcherเพื่อเปลี่ยน Java เวอร์ชันเริ่มต้นได้รวดเร็วยิ่งขึ้น

brew tap andycillin/tap
brew install java-switcher

จากนั้นคุณสามารถใช้คำสั่งเดียวเพื่อสลับเวอร์ชัน Java เริ่มต้นของคุณ

java-switcher 1.7

หรือ

java-switcher 10

ขอบคุณแอนดี้นี่เป็นเรื่องง่าย
GreenROBO

1

คุณสามารถเรียกใช้คำสั่งนี้เพื่อค้นหาเวอร์ชันของ Java ที่อยู่ภายใต้ / Library / Internet Plugins /:

defaults read /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Info.plist CFBundleVersion

1

มันเกิดขึ้นเพราะ. bash_profile ของคุณไม่ได้สะท้อนการเปลี่ยนแปลงหากต้องการสะท้อนให้เห็นเพียงใช้คำสั่งต่อไปนี้

$ source .bash_profile

0

เนื่องจากฉันไม่ได้เผชิญกับปัญหานี้ฉันกำลังสังหรณ์ใจ -

คุณลองทำสิ่งนี้ได้ไหม:

ซอฟต์ลิงก์ "java_home" ชี้ไปที่:

ls -lrt /usr/libexec/java_home

เอาต์พุต: (Stunted) lrwxr-xr-x java_home -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java_home

** ls -lrt /System/Library/Frameworks/JavaVM.framework/Versions MAC ของฉันผลิตต่อไปนี้:

 lrwxr-xr-x CurrentJDK ->
 /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents**

 lrwxr-xr-x   Current -> A
 lrwxr-xr-x  1 root  wheel   10 Oct 18 14:39 1.6.0 -> CurrentJDK
 lrwxr-xr-x  1 root  wheel   10 Oct 18 14:39 1.6 -> CurrentJDK
 lrwxr-xr-x  1 root  wheel   10 Oct 18 14:39 1.5.0 -> CurrentJDK
 lrwxr-xr-x  1 root  wheel   10 Oct 18 14:39 1.5 -> CurrentJDK
 lrwxr-xr-x  1 root  wheel   10 Oct 18 14:39 1.4.2 -> CurrentJDK
 lrwxr-xr-x  1 root  wheel   10 Oct 18 14:39 1.4 -> CurrentJDK

จากนี้เราอาจได้รับคำแนะนำเพื่อดำเนินการต่อไปหรือไม่


อ่านข้อคิดบางอย่างบนอินเทอร์เน็ตเกี่ยวกับ Java 7 ปัญหาเกี่ยวกับ MAC-OSX และมันแสดงให้เห็น blocked.Refer นี้: grep.dk/tag/xprotect-meta-plist ใน XProtect.meta.plist ฉันมี Java 7 และแฟลชอยู่ในรายการจนกระทั่งกำลังเล่น Vulnerability Police
user1428716

0

ฉันแก้ไขปัญหานี้โดยการติดตั้งโยเซมิตีอีกครั้งจากนั้นตรวจสอบรุ่นจาวาบนเทอร์มินัล (java -version) และ (javac -version) มันทำงานได้อย่างสมบูรณ์แบบในขณะนี้มันไม่ได้เปลี่ยนเป็นจาวา 7 เป็นรุ่น 6 ) libray> java> javavirtualmachine> javac เวอร์ชันปัจจุบันของคุณคุณต้องระบุที่อยู่ของจาวาโฮม


0

ฉันแก้ไขปัญหานี้ด้วย sudo rm /usr/bin/java

และฉันดาวน์โหลดและติดตั้งสภาพแวดล้อมรันไทม์ Java SE ล่าสุด: http://www.oracle.com/technetwork/java/javase/downloads/index.html

sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home/jre/bin/java /usr/bin/javaOperation not permittedไม่ได้ทำงานสำหรับฉันเพราะฉันมี El Capitan ปกป้องไดเรกทอรีของระบบบางตัวในโหมด "rootless" (หรือที่รู้จักว่า System Integrity Protection) มันใช้ได้กับ macOS Sierra และอาจเป็นรุ่น macOS ใหม่สำหรับอนาคตอันใกล้


0

การติดตั้งผ่าน JDK DMG แบบกระจายจากเว็บไซต์ Oracle อัปเดตทุกอย่างให้ฉันโดยอัตโนมัติ ฉันเคยเห็น (ใน El Capitan) อัปเดตผ่านSystem Preferences > Javaทำอัปเดต แต่ไม่ได้สะท้อนถึงบรรทัดคำสั่ง การติดตั้งผ่าน DMG จะทำงานได้


0

ตรวจสอบรุ่น JDK ที่ติดตั้ง:

$ ls  /Library/Java/JavaVirtualMachines/
jdk-11.0.2.jdk  jdk1.8.0_91.jdk

ตอนนี้ในการ~/.bashrcส่งออกของคุณJAVA_HOMEระบุรุ่น:

if [ -e /usr/libexec/java_home ]; then
  export JAVA_HOME=$(/usr/libexec/java_home -v 11)
fi

แหล่งไฟล์ bashrc และเวอร์ชัน Java จะถูกอัพเดต:

$ java -version
java version "11.0.2" 2019-01-15 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.2+9-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.2+9-LTS, mixed mode)

0

วิธีที่มีประสิทธิภาพ 100% ล่าสุด:


ในทุบตี:

vim ~/.bash_profile

เพิ่ม

export PATH="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH"
  • :wq เพื่อบันทึก
  • cmd + q แรงออกจาก bash
  • เปิด bash อีกครั้งและพิมพ์ java -version

แต่จริงๆแล้วเส้นทางนี้ชี้ไปที่ jre ไม่ใช่ jdk

หากคุณต้องการชี้พา ธ ไปยัง JDK คุณต้อง

  1. ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง JDK ไม่ใช่รันไทม์ JRE เดียว
  2. แทนที่เส้นทางก่อนหน้าเป็นPATH="/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk"คุณสามารถไปที่/Library/Java/JavaVirtualMachinesเพื่อให้แน่ใจว่าคุณได้ติดตั้งรุ่นของ JDK ที่คุณคาดหวัง
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.