Tôi chỉ cần chạy kịch bản dưới đây và rồi nó lấy và giải nén JDK vào đúng vị trí. Vấn đề là mỗi java
lệnh (như sao chép vào /urs/bin) cho phép sai sót. Sau đó tôi kiểm tra lại bằng cách vào JDK cài đặt thư mục bằng phương pháp cd
(Tôi bây giờ trong JDK/bin) và gõ: ./java -version
và nhận được: ./java: No such file or directory
, nhưng java
là có! ls -l
trên JDK cho thấy rằng tất cả java
khách hàng là bên trong bin.Java được cài đặt, trong danh sách, nhưng thực hiện sản xuất "./java: Không có tập tin hoặc thư mục"
#!/bin/bash
#Author: Yucca Nel http://thejarbar.org
#Will restart system
#Modify these variables as needed...
tempWork=/tmp/work
locBin=/usr/local/bin
javaUsrLib=/usr/lib/jvm
sudo mkdir -p $javaUsrLib
mkdir -p $tempWork
cd $tempWork
#Update this line to reflect newer versions of JDK...
wget http://download.oracle.com/otn-pub/java/jdk/7u2-b13/jdk-7u2-linux-i586.tar.gz
#Extract the download
tar -zxvf $tempWork/*
#Move it to where it can be found...
sudo mv -f $tempWork/jdk1.7* $javaUsrLib/
sudo ln -f -s $javaUsrLib/jdk1.7*/bin/* /usr/bin/
sudo rm -rf $tempWork
#Update this line to reflect newer versions of JDK...
export JAVA_HOME="$javaUsrLib/jdk1.7.0_02"
if ! grep "JAVA_HOME=$javaUsrLib/jdk1.7.0_02" /etc/environment
then
echo "JAVA_HOME=$javaUsrLib/jdk1.7.0_02"| sudo tee -a /etc/environment
fi
sudo /sbin/reboot
exit 0
Chạy ls -l /usr/lib/jvm/jdk1.7.0_02/bin/java
mang lại cho tôi: [email protected]:~$ -rwxr-xr-x 1 yucca yucca 5654 2011-11-17 22:38 /usr/lib/jvm/jdk1.7.0_02/bin/java
cũng chạy: file /usr/lib/jvm/jdk1.7.0_02/bin
với sản lượng:
/usr/lib/jvm/jdk1.7.0_02/bin: directory
Khởi động lại để cài đặt java? Đó không phải là "Cách Unix". –
@MarcB Nếu người dùng đóng terminal, môi trường (với Java) bị mất không? Kịch bản của tôi đã hoạt động cách đây vài ngày và khi tôi chạy với bash -x, tôi có thể thấy jdk được giải nén đầy đủ ... – thejartender
Không, công cụ '/ etc/environment' đảm bảo rằng biến JAVA_HOME var sẽ hiển thị trong tất cả các shell mới. Lý do duy nhất tôi có thể nghĩ đến để khởi động lại là để đảm bảo rằng tất cả các 'cũ' hiện đang chạy jvms được chấm dứt. –