Java là gói tùy chọn trên các phiên bản macOS mới nhất.
Tuy nhiên, sau khi cài đặt, có vẻ như biến môi trường JAVA_HOME không được đặt đúng .
Java là gói tùy chọn trên các phiên bản macOS mới nhất.
Tuy nhiên, sau khi cài đặt, có vẻ như biến môi trường JAVA_HOME không được đặt đúng .
Câu trả lời:
Với gói tùy chọn Java hoặc Oracle JDK được cài đặt, việc thêm một trong các dòng sau vào tệp ~ / .bash_profile của bạn sẽ đặt biến môi trường tương ứng.
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)"
Cập nhật: đã thêm cờ -v dựa trên phản hồi của Jilles van Gurp .
/usr/libexec/java_home
không phải là một thư mục mà là một thực thi. Nó xuất ra JAVA_HOME hiện được cấu hình và không thực sự thay đổi nó. Đó là những gì ứng dụng Tùy chọn Java dành cho, trong trường hợp của tôi dường như bị hỏng và thực sự không thay đổi JVM chính xác. Nó liệt kê 1.7 JVM nhưng tôi có thể chuyển / gỡ và kéo và thả tất cả những gì tôi muốn ở đó mà không thực sự thay đổi đầu ra /usr/libexec/java_home
.
Ngay cả sau khi cài đặt 1.7.0 u6 từ Oracle trên Lion và đặt nó làm mặc định trong các tùy chọn, nó vẫn trả về nhà apple 1.6 java. Cách khắc phục duy nhất thực sự hiệu quả với tôi là cài đặt JAVA_HOME theo cách thủ công:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_06.jdk/Contents/Home/
Ít nhất theo cách này khi chạy từ dòng lệnh, nó sẽ sử dụng 1.7. /usr/libexec/java_home
vẫn nhấn mạnh vào 1.6.
Cập nhật : Hiểu Java từ dòng lệnh trên OSX có giải thích tốt hơn về cách thức hoạt động của nó.
export JAVA_HOME=`/usr/libexec/java_home -v 1.7`
là cách để làm điều đó Lưu ý, cập nhật lên 1.8 hoạt động tốt.
Đối với tôi, Mountain Lion 10.8.2, giải pháp được bình chọn nhiều nhất không hoạt động. Tôi đã cài đặt jdk 1.7 qua Oracle và maven từ homebrew.
Giải pháp của tôi là từ tệp hadoop-env.sh của hadoop mà tôi đã cài đặt từ homebrew. Tôi thêm câu dưới đây vào ~ / .bash_profile, và nó hoạt động.
export JAVA_HOME="$(/usr/libexec/java_home)"
Giải pháp này cũng hoạt động cho OS X Yosemite với Java 1.8 được cài đặt từ Oracle.
export JAVA_HOME="$(/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java_home)"
Không có câu trả lời nào ở trên giúp tôi. Tôi cho rằng tất cả các câu trả lời là dành cho người giàOS X
Đối với OS X Yosemite 10.10, hãy làm theo các bước sau
Sử dụng trình soạn thảo văn bản yêu thích của bạn để mở: ~/.bash_profile
//This command will open the file using vim
$ vim ~/.bash_profile
Thêm dòng sau vào tệp và lưu nó (: theo sau là "x" cho vim):
export JAVA_HOME=$(/usr/libexec/java_home)
Sau đó, trong thiết bị đầu cuối gõ hai lệnh sau để xem đầu ra:
$ source ~/.bash_profile
$ echo $JAVA_HOME
Trong dòng thứ hai, bạn đang cập nhật nội dung của .bash_profile
tệp.
Cập nhật cho Java 9 và một số bí danh gọn gàng.
Trong .bash_profile
:
export JAVA_HOME8=`/usr/libexec/java_home --version 1.8`
export JAVA_HOME9=`/usr/libexec/java_home --version 9`
Lưu ý, đối với phiên bản mới nhất thì có 9
và không 1.9
.
Đặt Java hoạt động:
export JAVA_HOME=$JAVA_HOME8
export PATH=$JAVA_HOME/bin:$PATH
Một số bí danh bổ sung để chuyển đổi giữa các phiên bản khác nhau:
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'
Kiểm tra trong thiết bị đầu cuối:
% 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)
EDIT: Cập nhật cho Java 10
export JAVA_HOME10=`/usr/libexec/java_home --version 10`
alias j10='export JAVA_HOME=$JAVA_HOME10; export PATH=$JAVA_HOME/bin:$PATH'
EDIT: Cập nhật cho Java 11
export JAVA_HOME11=`/usr/libexec/java_home --version 11`
alias j11='export JAVA_HOME=$JAVA_HOME11; export PATH=$JAVA_HOME/bin:$PATH'
Ở trên không làm việc cho tôi với các công cụ EC2 của Amazon, bởi vì nó hy vọng bin/java
, vv bên dưới JAVA_HOME
. /System/Library/Frameworks/JavaVM.framework/Home
Đã làm việc.
Trên Mac OS X Lion, để đặt visualgc chạy, tôi đã sử dụng:
export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home
/usr/libexec/java_home
như thế nào? lệnh / usr / libexec / JAVA_HOME trả /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Sau đây làm việc cho tôi. Tôi đang sử dụng ZSH trên OSX Yosemite đã cài đặt Java 8.
Lệnh sau /usr/libexec/java_home
phát ra đường dẫn đến JDK home:
/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home
Trong bạn ~/.zshrc
,
export JAVA_HOME = "/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home"
Một cách tốt hơn (có thể nâng cấp hơn) là sử dụng như sau:
/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
Điều này cũng sẽ hoạt động với AWS vì nó có bin
bên dưới Trang chủ
Các JVM mới hơn của Oracle như 1.7.0_21-b12 dường như được cài đặt tại đây:
/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
/usr/libexec/java_home
công cụ trả về lỗi cho các phiên bản Java này.
cho macOS Mojave 10.14.1 và JAVA 11.0.1 Tôi đặt cấu hình là
export JAVA_HOME=$(/usr/libexec/java_home)
Phím trong terminal này để xác nhận:
$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)
Cách tiếp cận của tôi là:
.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
Điều này giúp dễ dàng chuyển đổi giữa J6 và J7
Tôi phải đặt nó một cách rõ ràng vào đường dẫn chính xác trên máy Macbook của tôi.
Các bước tiếp theo:
echo $JAVA_HOME
(nếu được đặt, nó sẽ hiển thị đường dẫn), nếu không, hãy thử tìm kiếm bằng cách sử dụngsudo find /usr/ -name *jdk
sudo nano ~/.bash_profile
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home
echo $JAVA_HOME
Tôi đang chạy MACOS MOJAVE - 10.14.2 (18C54) trên Macbook Air với JAVA 8
Đối với Mac OS X 10.9, tôi đã cài đặt phiên bản JRE mới nhất từ Oracle và sau đó đặt lại JAVA_HOME thành /L Library / Java / JavaVirtualMachines / jdk1.7.0_45.jdk /Contents / Home.
Tôi chắc chắn có một cách tốt hơn nhưng đã giúp tôi đứng dậy và chạy.
hughsmac: ~ hbrien $ echo $ JAVA_HOME /L Library / Java / JavaVirtualMachines / jdk1.7.0_45.jdk / Content / Home
OSX Yosemite, ZSH và Java SE Runtime Môi trường 8, tôi đã phải:
$ sudo ln -s /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands /System/Library/Frameworks/JavaVM.framework/Versions/Current/bin
và trong ~ / .zshrc thay đổi JAVA_HOME thành
export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/Current"
Gặp vấn đề tương tự sau khi tôi nâng cấp hệ điều hành Mac và làm việc với tôi:
cmd> vi ~ / .bash_profile
Thêm / cập nhật dòng cho JAVA_HOME: export JAVA_HOME = "/ Library / Java / JavaVirtualMachines / jdk1.7.0_15.jdk / Nội dung / Trang chủ"
cmd> nguồn ~ / .bash_profile hoặc mở một thiết bị đầu cuối mới
Tôi nghĩ rằng phiên bản jdk có thể khác nhau, vì vậy chỉ cần sử dụng phiên bản mà bạn có trong / Library / Java / JavaVirtualMachines /
Nếu bạn cần có nhiều phiên bản JDK trong Mac OS X (Yosemite), có thể hữu ích khi thêm một số tập lệnh để tự động chuyển đổi giữa chúng.
Những gì bạn làm là chỉnh sửa ~ / .bash_profile của bạn và thêm vào như sau:
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
Kịch bản làm gì trước tiên là loại bỏ các phiên bản JDK khác trong PATH để chúng không can thiệp vào phiên bản JDK mới của chúng tôi. Sau đó, nó sử dụng một cách thông minh / usr / libexec / java_home , một lệnh liệt kê các phiên bản JDK đã cài đặt. Đối số -v yêu cầu java_home trả về đường dẫn của JDK với phiên bản được cung cấp, ví dụ 1.7. Chúng tôi cũng cập nhật PATH để trỏ đến thư mục bin của thư mục JAVA_HOME mới tìm thấy . Cuối cùng, chúng ta có thể thực hiện chức năng bằng cách sử dụng
setjdk 1.7
trong đó chọn phiên bản JDK được cài đặt mới nhất của nhánh 1.7. Để chọn một phiên bản cụ thể, bạn chỉ cần thực hiện
setjdk 1.7.0_51
thay thế. Chạy / usr / libexec / java_home -V để biết thêm chi tiết về cách chọn phiên bản.
PS Đừng quên nguồn ~ / .bash_profile sau khi bạn lưu nó.
Câu trả lời này có liên quan đến Sư tử núi chứ không phải Sư tử. Tôi cần phải làm điều này cho Công cụ dòng lệnh AWS. Theo tài liệu AWS , chạy which java
trả về/usr/bin/java
.
Vì vậy, tôi đặt JAVA_HOME=/usr
trong.bashrc
.
Rõ ràng, /usr/bin/java
là một liên kết tượng trưng để /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
làm cho tất cả hoạt động.
Cập nhật
Như đã đề cập trong bình luận bên dưới, JAVA_HOME
giá trị này không phải là một giải pháp lý tưởng khi JAVA_HOME
biến môi trường được sử dụng bởi những thứ khác ngoài Công cụ dòng lệnh AWS. Tuy nhiên, nó hoạt động tốt đối với Công cụ dòng lệnh AWS, như được đưa ra trong tài liệu của họ.
Đối với Mac Yosemite,
JDK 1.7.0_xx đang sử dụng
$ 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
Chỉ cần đặt java_home của phiên bản 1.8 jdk trong netbeans.conf
tệp:
/Applications/NetBeans/NetBeans 8.2.app/Contents/Resources/NetBeans/etc/netbeans.conf
dòng không ghi chú:
netbeans_jdkhome="path/to/jdk"
và đặt đường dẫn đến 1,8 jdk của bạn, trong trường hợp của tôi:
netbeans_jdkhome="/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home"
Cách tiếp cận này cho phép bạn có một số phiên bản jdk trên mac os
Đối với người dùng thiết bị đầu cuối Fish trên Mac (tôi tin rằng nó cũng có sẵn trên Linux), điều này sẽ hoạt động:
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
cho người dùng mac. java 8 nên thêm
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
tham chiếu: http://qiita.com/seri_k/items/e978c1339ce51f13e297