Java เป็นแพคเกจเสริมบน macOS เวอร์ชันล่าสุด
แต่ติดตั้งครั้งเดียวก็จะปรากฏขึ้นเช่นJAVA_HOMEตัวแปรสภาพแวดล้อมที่ไม่เหมาะสม
Java เป็นแพคเกจเสริมบน macOS เวอร์ชันล่าสุด
แต่ติดตั้งครั้งเดียวก็จะปรากฏขึ้นเช่นJAVA_HOMEตัวแปรสภาพแวดล้อมที่ไม่เหมาะสม
คำตอบ:
เมื่อติดตั้งแพ็คเกจเสริมของ JavaหรือOracle JDKการเพิ่มหนึ่งในบรรทัดต่อไปนี้ในไฟล์~ / .bash_profileของคุณจะตั้งค่าตัวแปรสภาพแวดล้อมตามลำดับ
export JAVA_HOME="$(/usr/libexec/java_home -v 1.6)"
or
export JAVA_HOME="$(/usr/libexec/java_home -v 1.7)"
or
export JAVA_HOME="$(/usr/libexec/java_home -v 1.8)"
ปรับปรุง: เพิ่ม-vธงอยู่บนพื้นฐานของJilles รถตู้ Gurp การตอบสนอง
/usr/libexec/java_home
ไม่ใช่ไดเรกทอรี แต่เป็นไฟล์ปฏิบัติการ มันจะส่งออก JAVA_HOME ที่ตั้งค่าไว้ในปัจจุบันและจะไม่เปลี่ยนแปลง นั่นเป็นสิ่งที่แอป Java Preferences ใช้ซึ่งในกรณีของฉันดูเหมือนจะไม่สมบูรณ์และไม่ได้เปลี่ยน JVM อย่างถูกต้อง มันไม่รายการ 1.7 JVM แต่ฉันสามารถสลับ / untoggle /usr/libexec/java_home
และลากและวางทั้งหมดที่ฉันต้องการโดยไม่ต้องมีการเปลี่ยนแปลงจริงการส่งออกของ
แม้หลังจากติดตั้ง 1.7.0 u6 จาก Oracle บน Lion และตั้งค่าให้เป็นค่าเริ่มต้นในการกำหนดค่าตามความชอบ การแก้ไขเดียวที่ใช้งานได้จริงสำหรับฉันคือการตั้งค่า JAVA_HOME ด้วยตนเอง:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_06.jdk/Contents/Home/
อย่างน้อยตอนนี้เมื่อเรียกใช้จากบรรทัดคำสั่งมันจะใช้ 1.7 /usr/libexec/java_home
ยังยืนยันใน 1.6
อัปเดต : การทำความเข้าใจ Java จาก Command Line บน OSXมีคำอธิบายที่ดีกว่าเกี่ยวกับการทำงานของมัน
export JAVA_HOME=`/usr/libexec/java_home -v 1.7`
เป็นวิธีที่จะทำ หมายเหตุการอัปเดตสิ่งนี้เป็น 1.8 ใช้งานได้ดี
สำหรับฉัน Mountain Lion 10.8.2 โซลูชันที่โหวตมากที่สุดไม่ทำงาน ฉันติดตั้ง jdk 1.7 ผ่าน Oracle และ maven จาก homebrew
โซลูชันของฉันมาจากไฟล์ hadoop-env.sh ของ hadoop ซึ่งฉันติดตั้งจาก homebrew เช่นกัน ฉันเพิ่มประโยคด้านล่างใน ~ / .bash_profile และใช้งานได้
export JAVA_HOME="$(/usr/libexec/java_home)"
วิธีนี้ยังใช้งานได้กับ OS X Yosemite ที่ติดตั้ง Java 1.8 จาก Oracle
export JAVA_HOME="$(/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java_home)"
ไม่มีคำตอบข้างต้นช่วยฉัน ฉันคิดว่าคำตอบทั้งหมดสำหรับผู้สูงอายุOS X
สำหรับ OS X Yosemite 10.10 ให้ทำตามขั้นตอนเหล่านี้
ใช้โปรแกรมแก้ไขข้อความที่คุณชื่นชอบเพื่อเปิด: ~/.bash_profile
//This command will open the file using vim
$ vim ~/.bash_profile
เพิ่มบรรทัดต่อไปนี้ในไฟล์และบันทึก (: ตามด้วย "x" สำหรับกลุ่ม):
export JAVA_HOME=$(/usr/libexec/java_home)
จากนั้นในเทอร์มินัลพิมพ์สองคำสั่งต่อไปนี้เพื่อดูผลลัพธ์:
$ source ~/.bash_profile
$ echo $JAVA_HOME
ในบรรทัดที่สองคุณกำลังอัพเดตเนื้อหาของ.bash_profile
ไฟล์
อัพเดตสำหรับ Java 9 และนามแฝงที่เรียบร้อย
ใน.bash_profile
:
export JAVA_HOME8=`/usr/libexec/java_home --version 1.8`
export JAVA_HOME9=`/usr/libexec/java_home --version 9`
ทราบว่าสำหรับรุ่นล่าสุดมันเป็นและไม่ได้9
1.9
ตั้งค่า Java ที่ใช้งานอยู่:
export JAVA_HOME=$JAVA_HOME8
export PATH=$JAVA_HOME/bin:$PATH
นามแฝงเพิ่มเติมบางอย่างเพื่อสลับระหว่างเวอร์ชันต่างกัน:
alias j8='export JAVA_HOME=$JAVA_HOME8; export PATH=$JAVA_HOME/bin:$PATH'
alias j9='export JAVA_HOME=$JAVA_HOME9; export PATH=$JAVA_HOME/bin:$PATH'
ทดสอบใน terminal:
% j8
% java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
% j9
% java -version
java version "9"
Java(TM) SE Runtime Environment (build 9+181)
Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode)
แก้ไข: อัปเดตสำหรับ Java 10
export JAVA_HOME10=`/usr/libexec/java_home --version 10`
alias j10='export JAVA_HOME=$JAVA_HOME10; export PATH=$JAVA_HOME/bin:$PATH'
แก้ไข: อัปเดตสำหรับ Java 11
export JAVA_HOME11=`/usr/libexec/java_home --version 11`
alias j11='export JAVA_HOME=$JAVA_HOME11; export PATH=$JAVA_HOME/bin:$PATH'
ดังกล่าวข้างต้นไม่ทำงานสำหรับฉันกับ Amazon EC2 เครื่องมือเพราะมันคาดbin/java
ฯลฯ JAVA_HOME
ภายใต้ /System/Library/Frameworks/JavaVM.framework/Home
ทำงานได้ดี
สำหรับ OS X คุณสามารถทำได้:
export JAVA_HOME=`/System/Library/Frameworks/JavaVM.framework/Versions/Current/commands/java_home`
ฉันใช้ Mac OS X Lion เพื่อตั้งค่า visualgc ให้ทำงาน:
export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home
/usr/libexec/java_home
อย่างไร คำสั่ง / usr / libexec / java_home ส่งคืน /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
ต่อไปนี้ใช้งานได้สำหรับฉัน ฉันใช้ ZSH บน OSX Yosemite พร้อมติดตั้ง Java 8
คำสั่งต่อไปนี้/usr/libexec/java_home
ส่งเสียงพา ธ ไปที่หน้าแรกของ JDK:
/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home
ในของคุณ~/.zshrc
,
export JAVA_HOME = "/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home"
วิธีที่ดีกว่า (อัปเกรดได้มากขึ้น) คือการใช้สิ่งต่อไปนี้:
/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
สิ่งนี้ควรทำงานกับ AWS ด้วยเช่นกันเนื่องจากbin
อยู่ใต้โฮม
Oracle JVM ที่ใหม่กว่าเช่น 1.7.0_21-b12 ดูเหมือนจะติดตั้งที่นี่:
/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
/usr/libexec/java_home
เครื่องมือส่งคืนข้อผิดพลาดสำหรับ Java เวอร์ชันเหล่านี้
สำหรับ macOS Mojave 10.14.1 และ JAVA 11.0.1 ฉันตั้งค่าโปรไฟล์เป็น
export JAVA_HOME=$(/usr/libexec/java_home)
ใส่รหัสนี้ในเทอร์มินัลเพื่อยืนยัน:
$JAVA_HOME/bin/java -version
java version "11.0.1" 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)
แนวทางของฉันคือ
.bashrc
export JAVA6_HOME=`/usr/libexec/java_home -v 1.6`
export JAVA7_HOME=`/usr/libexec/java_home -v 1.7`
export JAVA_HOME=$JAVA6_HOME
# -- optional
# export PATH=$JAVA_HOME/bin:$PATH
ทำให้ง่ายต่อการสลับระหว่าง J6 และ J7
ฉันต้องตั้งค่าอย่างชัดเจนไปยังเส้นทางที่แน่นอนบนเครื่อง Macbook ของฉัน
ขั้นตอนตาม:
echo $JAVA_HOME
(ถ้าตั้งไว้มันจะแสดงเส้นทาง) ถ้าไม่ลองค้นหาโดยใช้sudo find /usr/ -name *jdk
sudo nano ~/.bash_profile
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home
echo $JAVA_HOME
ฉันใช้งาน MacOS MOJAVE - 10.14.2 (18C54) บน Macbook Air กับ JAVA 8
สำหรับ Mac OS X 10.9 ฉันติดตั้ง JRE เวอร์ชันล่าสุดจาก Oracle จากนั้นรีเซ็ต JAVA_HOME เป็น /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home
ฉันแน่ใจว่ามีวิธีที่ดีกว่า
hughsmac: ~ hbrien $ echo $ JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home
OSX Yosemite, ZSH และ Java SE Runtime Environment 8 ฉันต้อง:
$ sudo ln -s /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands /System/Library/Frameworks/JavaVM.framework/Versions/Current/bin
และใน ~ / .zshrc เปลี่ยน JAVA_HOME เป็น
export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/Current"
มีปัญหาเดียวกันหลังจากฉันอัพเกรด Mac OS และการทำงานต่อไปนี้สำหรับฉัน:
cmd> vi ~ / .bash_profile
เพิ่ม / อัพเดตบรรทัดสำหรับ JAVA_HOME: export JAVA_HOME = "/ Library / Java / JavaVirtualMachines / jdk1.7.0_15.jdk / เนื้อหา / หน้าแรก"
cmd> source ~ / .bash_profile หรือเปิดเทอร์มินัลใหม่
ฉันคิดว่ารุ่น jdk อาจแตกต่างกันดังนั้นให้ใช้รุ่นที่คุณมีภายใต้ / Library / Java / JavaVirtualMachines /
หากคุณจำเป็นต้องมี JDK หลายเวอร์ชันภายใต้ Mac OS X (Yosemite) อาจเป็นประโยชน์ในการเพิ่มสคริปต์บางอย่างสำหรับการสลับอัตโนมัติระหว่างพวกเขา
สิ่งที่คุณทำคือการแก้ไข~ / .bash_profileของคุณและเพิ่มสิ่งต่อไปนี้:
function setjdk() {
if [ $# -ne 0 ]; then
removeFromPath '/System/Library/Frameworks/JavaVM.framework/Home/bin'
if [ -n "${JAVA_HOME+x}" ]; then
removeFromPath $JAVA_HOME
fi
export JAVA_HOME=`/usr/libexec/java_home -v $@`
export PATH=$JAVA_HOME/bin:$PATH
fi
}
function removeFromPath() {
export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;")
}
setjdk 1.7
สิ่งที่สคริปต์ทำคือการลบรุ่น JDK อื่น ๆ ในPATH ก่อนเพื่อไม่ให้รบกวน JDK รุ่นใหม่ของเรา จากนั้นจะทำให้การใช้งานที่ชาญฉลาดของ/ usr / libexec / java_homeซึ่งเป็นคำสั่งที่แสดงรายการรุ่น JDK ที่ติดตั้ง -vอาร์กิวเมนต์บอกJAVA_HOMEเพื่อกลับเส้นทางของ JDK กับรุ่นที่จัดเช่น 1.7 นอกจากนี้เรายังอัปเดตPATHให้ชี้ไปที่ไดเรกทอรี bin ของไดเรกทอรีJAVA_HOME ที่เพิ่งค้นพบ ในตอนท้ายเราสามารถรันฟังก์ชั่นโดยใช้
setjdk 1.7
ซึ่งเลือกรุ่น JDK ที่ติดตั้งล่าสุดของสาขา 1.7 ในการเลือกเวอร์ชันเฉพาะคุณสามารถดำเนินการได้
setjdk 1.7.0_51
แทน. รัน/ usr / libexec / java_home -Vเพื่อรับรายละเอียดเพิ่มเติมเกี่ยวกับวิธีเลือกเวอร์ชัน
PS อย่าลืม แหล่งที่มา ~ / .bash_profileหลังจากที่คุณบันทึก
สำหรับ Java 11 (JDK 11) สามารถอยู่ด้วยคำสั่งต่อไปนี้:
/usr/libexec/java_home -v 11
คำตอบนี้เกี่ยวข้องกับMountain Lionไม่ใช่ Lion ฉันต้องทำสิ่งนี้เพื่อเครื่องมือบรรทัดคำสั่ง AWS ตามเอกสาร AWSวิ่งผลตอบแทนwhich java
/usr/bin/java
ดังนั้นผมตั้งในของฉันJAVA_HOME=/usr
.bashrc
เห็นได้ชัดว่า/usr/bin/java
เป็นลิงก์สัญลักษณ์/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
ซึ่งทำให้การทำงานทั้งหมด
ปรับปรุง
ดังที่ได้กล่าวไว้ในความคิดเห็นด้านล่างJAVA_HOME
ค่านี้ไม่ใช่วิธีแก้ปัญหาที่สมบูรณ์แบบเมื่อต้องการใช้JAVA_HOME
ตัวแปรอื่น ๆ นอกเหนือจากเครื่องมือบรรทัดคำสั่ง AWS มันใช้งานได้ดีสำหรับเครื่องมือบรรทัดคำสั่งของ AWS ตามที่ระบุในเอกสาร
สำหรับ Mac Yosemite
ใช้ JDK 1.7.0_xx
$ ls -ltar /usr/bin/java
/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.7.0_xx.jdk/Contents/Home
ทุกคนที่ใช้ AUSKEY จาก Australian Tax Office (ATO) ควรถอนการติดตั้ง AUSKEY นี่เป็นปัญหาของ JAVA_HOME ของฉัน
มันไม่จำเป็นสำหรับผู้ใช้ MAC อีกต่อไป ย่ะ!
ฉันใช้Fish shell กับ High Sierra 10.13.4 และติดตั้ง Java ผ่าน Brew
ไม่ได้ตั้งค่าโดยอัตโนมัติดังนั้นการตั้งค่าอย่างถูกต้องในระบบที่ฉันเรียกใช้:
set -U JAVA_HOME (/usr/libexec/java_home)
เพียงตั้งค่า java_home เป็น 1.8 jdk ในnetbeans.conf
ไฟล์:
/Applications/NetBeans/NetBeans 8.2.app/Contents/Resources/NetBeans/etc/netbeans.conf
สาย uncomment:
netbeans_jdkhome="path/to/jdk"
และกำหนดเส้นทางไปที่ 1.8 jdk ของคุณในกรณีของฉัน:
netbeans_jdkhome="/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home"
วิธีนี้ทำให้คุณมี jdk หลายรุ่นใน mac os
สำหรับผู้ใช้ Fish terminal บน Mac (ฉันเชื่อว่ามีให้ใน Linux ด้วย) สิ่งนี้ควรใช้งานได้:
set -Ux JAVA_8 (/usr/libexec/java_home --version 1.8)
set -Ux JAVA_12 (/usr/libexec/java_home --version 12)
set -Ux JAVA_HOME $JAVA_8 //or whichever version you want as default
สำหรับผู้ใช้ mac java 8 ควรเพิ่ม
export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
# JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home
java 6:
export JAVA_HOME=`/usr/libexec/java_home -v 1.6`
# JAVA_HOME=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home