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