Câu trả lời:
Tôi không chắc lắm nhưng nếu bạn cài đặt RPMS bình thường, giá trị JAVA_HOME cũng có thể được đặt thành:
/usr/java/default/
EDIT: Tôi vừa kiểm tra trên hệ thống nhà của tôi. Tôi đã tạo tập tin này:
/etc/profile.d/java.sh
Nó bao gồm:
export JAVA_HOME=/usr/java/default/
và tôi đang sử dụng phiên bản chính thức từ Sun: jdk-1.6.0_12-fcs
EDIT: Đây là cách tôi thiết lập Java trên máy của mình :
Tải xuống và cài đặt Java JDK từ Oracle
Đảm bảo Java này được sử dụng thay vì phiên bản OpenJDK bằng hai lệnh sau:
alternatives --install /usr/bin/java java /usr/java/default/bin/java 999999 \
--slave /usr/bin/keytool keytool /usr/java/default/bin/keytool \
--slave /usr/bin/rmiregistry rmiregistry /usr/java/default/bin/rmiregistry
alternatives --install /usr/bin/javac javac /usr/java/default/bin/javac 999999 \
--slave /usr/bin/jar jar /usr/java/default/bin/jar \
--slave /usr/bin/rmic rmic /usr/java/default/bin/rmic
Đảm bảo tất cả người dùng có biến môi trường JAVA_HOME được đặt thành giá trị chính xác:
echo "export JAVA_HOME=/usr/java/default/" > /etc/profile.d/java_home.sh
/usr/java/default
trong CentOS của tôi 6 hộp với OpenJDK 1.6 và 1.7 được cài đặt.
Bạn muốn đặt JAVA_HOME là vị trí gốc của JDK hoặc JRE, ví dụ:
export JAVA_HOME=/usr/java/jdk1.3
Nếu JDK (Bộ công cụ phát triển) được cài đặt, ypu có thể muốn nó trỏ đến đó, nếu không thì sử dụng đường dẫn JRE (Môi trường chạy thi hành Java). Sau đó, bạn có thể muốn đặt biến môi trường $ PATH của mình để bao gồm cả thư mục bin:
export PATH=$PATH:/usr/java/jdk1.3/bin
Nếu bạn đang sử dụng tomcat, bạn cũng có thể cần đặt CATALINA_HOME cho người dùng tomcat.
export CATALINA_HOME=/path/to/tomcat
Để đặt tùy chọn này cho hệ thống bạn muốn chỉnh sửa / etc / profile hoặc thêm tệp .sh trong thư mục /etc/profile.d. Đối với một người dùng cụ thể, bạn có thể đặt nó vào các tệp người dùng ~ / .profile hoặc ~ / .bash_profile.
Dưới đây luôn luôn làm việc cho tôi hoàn hảo:
[user@base ~]$ locate bin/java
/usr/bin/java
/usr/bin/javac
/usr/bin/javadoc
/usr/bin/javaws
/usr/java/jdk1.6.0_31/bin/java
/usr/java/jdk1.6.0_31/bin/javac
/usr/java/jdk1.6.0_31/bin/javadoc
/usr/java/jdk1.6.0_31/bin/javah
/usr/java/jdk1.6.0_31/bin/javap
/usr/java/jdk1.6.0_31/bin/javaws
/usr/java/jdk1.6.0_31/jre/bin/java
/usr/java/jdk1.6.0_31/jre/bin/java_vm
/usr/java/jdk1.6.0_31/jre/bin/javaws
Điều đó có nghĩa là tôi có thể đặt JAVA_HOME là /usr/java/jdk1.6.0_31
Tôi đã xem xét vấn đề nếu một người thay đổi phiên bản java đang được sử dụng với:
alternatives --config java
Sau đó, bất kỳ mã hóa cứng nào JAVA_HOME
cũng sẽ thay đổi (ít nhất là trên Centos 6.6 tôi đang nhìn chằm chằm vào). Đó là, không có /usr/java
.
Đây dường như không phải là cách tốt nhất (mở cho thất bại) nhưng trong 10 phút tôi đã dành cho việc này có vẻ như là cách tốt nhất.
Trong /etc/bashrc
tôi đã sửa đổi cài đặt thành JAVA_HOME
:
export JAVA_HOME=$(alternatives --display java | grep current | sed 's/link currently points to //' | sed 's|/bin/java||')
Bạn phải làm một cái gì đó tương tự trên MacOSX nhưng không có tất cả grep
và sed
để phân tích kết quả. Chắc chắn alternatives
cung cấp một giải pháp tương tự dễ dàng hơn.
Dù sao tôi hy vọng tôi đã giúp.
Cập nhật
Không, đó sẽ là JRE_HOME
. JDK / SDK không chứng minh là hiển nhiên (Tôi sẽ tiếp tục tìm kiếm).
Các alternatives
dường như chỉ được khoảng JRE theo mặc định. Tôi trì hoãn trả lời @Niels hoặc chỉ cài đặt Java yum
và đặt JAVA_HOME cho điều đó (mẹo là nơi tôi tìm thấy nơi đã được cài đặt!).
yum install java-1.8.0-openjdk-devel.x86_64
cd /usr/lib/jvm
Tôi nhận thấy java_1.8.0
là một liên kết tượng trưng /etc/alternatives/java_sdk_1.8.0
và do đó, đặt $ JAVA_HOME của tôi thành /usr/lib/jvm/java_1.8.0
. Trong /etc/bashrc
.
Điều đó thật kỳ lạ, toàn bộ điểm có biến môi trường JAVE_HOME là vì vậy bạn không phải chỉ định đường dẫn cho mỗi chương trình, nó có thể có đường dẫn này bằng cách tìm biến này.
Dù bằng cách nào, cách chính xác để tìm biến môi trường cho JAVA_HOME là sử dụng echo:
[root@host ~]# echo $JAVA_HOME
/usr/java/j2sdk1.4.2_09
Chạy lệnh này sẽ hiển thị đường dẫn cho dù bạn đang chạy phiên bản nào, từ dòng lệnh.
re: Centos7, tham khảo tệp /etc/java/java.conf.
trong đó JAVA_HOME được chỉ định là nằm trong thư mục sau: / usr / lib / jvm / java
Tôi đã kiểm tra, đây là phiên bản chính xác của jdk tôi đã tải qua yum, và vì vậy ...
env của tôi không có JAVA_HOME được đặt theo mặc định, do đó tôi đặt nó trong .bash_profile
Tôi thấy trình quản lý gói có thể đặt ở nhiều vị trí khác nhau, vì vậy sử dụng vị trí đó (bạn sẽ cần cài đặt rõ ràng điều này nếu sử dụng một thùng chứa) sau đây là ít dễ vỡ hơn
javaCompiler=$(which javac)
javaBin=$(dirname $(readlink -f $javaCompiler))
javaHome=${javaBin%/*}
export JAVA_HOME=$javaHome
hoặc cho JRE
javaExec=$(which java)
javaBin=$(dirname $(readlink -f $javaExec))
javaHome=${javaBin%/*}
export JRE_HOME=$javaHome