Dự án của tôi có nhu cầu test trên nhiều phiên bản Java Development Kit khác nhau. Vì vậy tôi xây dựng một shell script với UI để đơn giản hóa quá trình chuyển đổi giữa các JDK.

Giả sử tôi có đường dẫn /opt/jdk là đường dẫn đến phiên bản Java Development Kit hiện đang sử dụng.
Trước tiên tôi phải thêm /opt/jdk vào biến môi trường PATH và JAVA_HOME như sau:
~/.bash_aliases
export JAVA_HOME=/opt/jdk export PATH=/opt/jdk/bin:$PATH
Tạo một thư mục /opt/.jdk (có dấu chấm để ẩn thư mục này). Đây là nơi chứa tất cả các phiên bản JDK bạn muốn. Tên thư mục chứa JDK theo một cú pháp là jdk-<version>, ví dụ jdk-10.
Tải về Java SE tại trang Download của Oracle., lựa chọn bản i586 hoặc x64 tùy theo cấu hình máy và nhu cầu, lưu ý chỉ tải định dạng .tar.gz. Ví dụ tôi tải về bản jdk-8u191-linux-x64.tar.gz rồi giải nén vào /opt/.jdk như sau:
$ cd /opt/.jdk $ tar zxf ~/Downloads/jdk-8u191-linux-x64.tar.gz $ mv jdk1.8.0_191 jdk-08
Shell script sau sẽ hiển thị một menu để bạn chọn phiên bản JDK, sau đó tạo một soft link từ phiên bản JDK được chọn trong /opt/.jdk đến /opt/jdk.
/usr/local/bin/jdk-alt.sh
#!/bin/bash
JDK=/opt/jdk
JDK_BASE=/opt/.jdk
ALL_JDK=($(find ${JDK_BASE} -maxdepth 1 -type d -name 'jdk-*' | sort -n))
# Select the latest version by default
DEFAULT_JDK=${ALL_JDK[-1]}
# Find the current instance of JDK if any
if [ -L ${JDK} ]; then
CUR_JDK=$(readlink -f ${JDK})
else
CUR_JDK=${DEFAULT_JDK}
fi
args=()
for jdk in ${ALL_JDK[@]}; do
# Select the current version
if [ "${CUR_JDK}" = "${jdk}" ]; then
selected=on
else
selected=off
fi
id=${jdk/*jdk-/}
# Get the version number
version=$(${jdk}/bin/java -version 2>&1 >/dev/null | \
grep 'java version' | \
sed -r 's/.* "([0-9._]+)".*/\1/' | \
awk -F_ '{print $1}')
# form the 'dialog' arguments
args+=( ${id} "version ${version}" ${selected} )
done
# Show a dialog of all available JDK versions
choice=$(dialog --backtitle "ALTERNATIVE JAVA DEVELOPMENT KIT" \
--radiolist "Select a JDK version:" 15 40 8 \
"${args[@]}" 3>&1 1>&2 2>&3)
if [ -n "${choice}" ]; then
sudo rm -f ${JDK} && \
sudo ln -s ${JDK_BASE}/jdk-${choice} ${JDK}
# Show the current JDK version
${JDK}/bin/java -version
fi
Phân quyền executable cho script.
$ sudo chmod +x /usr/local/bin/jdk-alt.sh
Gọi chạy như sau:
$ sudo jdk-alt.sh









