Skip to content

Commit a3c48ee

Browse files
committed
install JDK 21 for gradle, and JDK 24 for runtime
1 parent 2be0818 commit a3c48ee

File tree

1 file changed

+83
-32
lines changed

1 file changed

+83
-32
lines changed

docker/install_jdk.sh

Lines changed: 83 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -14,49 +14,100 @@
1414
##===----------------------------------------------------------------------===##
1515
set -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
1821
if [ "$JDK_VENDOR" = "" ]; then
1922
declare -r JDK_VENDOR="Corretto"
2023
fi
21-
echo "Installing $JDK_VENDOR JDK..."
2224

2325
apt-get update && apt-get install -y wget
2426

2527
echo "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
61112
echo "JAVA_HOME = /usr/lib/jvm/default-jdk"
62113
/usr/lib/jvm/default-jdk/bin/java -version

0 commit comments

Comments
 (0)