1414# #===----------------------------------------------------------------------===##
1515set -euo pipefail
1616
17+ # We need JDK 24 because that's the supported version with latest FFM
18+ # However, we also need JDK 23 at most because Gradle does not support 24.
19+
1720# Supported JDKs: Corretto
1821if [ " $JDK_VENDOR " = " " ]; then
1922declare -r JDK_VENDOR=" Corretto"
2023fi
21- echo " Installing $JDK_VENDOR JDK..."
2224
2325apt-get update && apt-get install -y wget
2426
2527echo " Download JDK for: $( uname -m) "
2628
27- if [ " $JDK_VENDOR " = ' Corretto' ]; then
28- if [ " $( uname -m) " = ' aarch64' ]; then
29- declare -r JDK_URL=" https://corretto.aws/downloads/latest/amazon-corretto-24-aarch64-linux-jdk.tar.gz"
30- declare -r EXPECT_JDK_MD5=" 3b543f4e971350b73d0ab6d8174cc030"
31- else
32- declare -r JDK_URL=" https://corretto.aws/downloads/latest/amazon-corretto-24-x64-linux-jdk.tar.gz"
33- declare -r EXPECT_JDK_MD5=" 130885ded3cbfc712fbe9f7dace45a52"
34- fi
35-
36- wget -q -O jdk.tar.gz " $JDK_URL "
37-
38- declare JDK_MD5 # on separate lines due to: SC2155 (warning): Declare and assign separately to avoid masking return values.
39- JDK_MD5=" $( md5sum jdk.tar.gz | cut -d ' ' -f 1) "
40- if [ " $JDK_MD5 " != " $EXPECT_JDK_MD5 " ]; then
41- echo " Downloaded JDK MD5 does not match expected!"
42- echo " Expected: $EXPECT_JDK_MD5 "
43- echo " Was: $JDK_MD5 "
44- exit 1;
45- else
46- echo " JDK MD5 is correct." ;
47- fi
48- else
49- echo " Unsupported JDK vendor: '$JDK_VENDOR '"
50- exit 1
51- fi
29+ download_and_install_jdk () {
30+ local jdk_version=" $1 "
31+ local jdk_url=" "
32+ local expected_md5=" "
33+
34+ echo " Installing $JDK_VENDOR JDK (${jdk_version} )..."
35+
36+ if [ " $JDK_VENDOR " = ' Corretto' ]; then
37+ if [ " $( uname -m) " = ' aarch64' ]; then
38+ case " $jdk_version " in
39+ " 21" )
40+ jdk_url=" https://corretto.aws/downloads/latest/amazon-corretto-21-aarch64-linux-jdk.tar.gz"
41+ expected_md5=" 87e458029cf9976945dfa3a22af3f850"
42+ ;;
43+ " 24" )
44+ jdk_url=" https://corretto.aws/downloads/latest/amazon-corretto-24-aarch64-linux-jdk.tar.gz"
45+ expected_md5=" 3b543f4e971350b73d0ab6d8174cc030"
46+ ;;
47+ * )
48+ echo " Unsupported JDK version: '$jdk_version '"
49+ exit 1
50+ ;;
51+ esac
52+ else
53+ case " $jdk_version " in
54+ " 21" )
55+ jdk_url=" https://corretto.aws/downloads/latest/amazon-corretto-21-x64-linux-jdk.tar.gz"
56+ expected_md5=" 84368821f590bd58708d9e350534c7f8"
57+ ;;
58+ " 24" )
59+ jdk_url=" https://corretto.aws/downloads/latest/amazon-corretto-24-x64-linux-jdk.tar.gz"
60+ expected_md5=" 130885ded3cbfc712fbe9f7dace45a52"
61+ ;;
62+ * )
63+ echo " Unsupported JDK version: '$jdk_version '"
64+ exit 1
65+ ;;
66+ esac
67+ fi
68+ else
69+ echo " Unsupported JDK vendor: '$JDK_VENDOR '"
70+ exit 1
71+ fi
72+
73+ # Download JDK
74+ local jdk_filename=" jdk_${jdk_version} .tar.gz"
75+ wget -q -O " $jdk_filename " " $jdk_url "
76+
77+ # Verify MD5
78+ local jdk_md5
79+ jdk_md5=" $( md5sum " $jdk_filename " | cut -d ' ' -f 1) "
80+ if [ " $jdk_md5 " != " $expected_md5 " ]; then
81+ echo " Downloaded JDK $jdk_version MD5 does not match expected!"
82+ echo " Expected: $expected_md5 "
83+ echo " Was: $jdk_md5 "
84+ exit 1
85+ else
86+ echo " JDK $jdk_version MD5 is correct."
87+ fi
88+
89+ # Extract and install JDK
90+ mkdir -p " /usr/lib/jvm/jdk-${jdk_version} "
91+ mv " $jdk_filename " " /usr/lib/jvm/jdk-${jdk_version} /"
92+ cd " /usr/lib/jvm/jdk-${jdk_version} /" || exit 1
93+ tar xzf " $jdk_filename " && rm " $jdk_filename "
94+
95+ # Move extracted directory to a standard name
96+ local extracted_dir
97+ extracted_dir=" $( find . -maxdepth 1 -type d -name " *jdk*" | head -n1) "
98+ if [ -n " $extracted_dir " ]; then
99+ mv " $extracted_dir " /* .
100+ rm -rf " $extracted_dir "
101+ fi
52102
53- # Extract and verify the JDK installation
103+ echo " JDK $jdk_version installed successfully in /usr/lib/jvm/jdk-${jdk_version} /"
104+ cd
105+ }
54106
55- mkdir -p /usr/lib/jvm/
56- mv jdk.tar.gz /usr/lib/jvm/
57- cd /usr/lib/jvm/
58- tar xzvf jdk.tar.gz && rm jdk.tar.gz
59- mv " $( find . -depth -maxdepth 1 -type d | head -n1) " default-jdk
107+ # Usage: Install both JDK versions
108+ download_and_install_jdk " 21"
109+ download_and_install_jdk " 24"
60110
111+ ln -sf /usr/lib/jvm/jdk-21 /usr/lib/jvm/default-jdk
61112echo " JAVA_HOME = /usr/lib/jvm/default-jdk"
62113/usr/lib/jvm/default-jdk/bin/java -version
0 commit comments