Skip to content

Instantly share code, notes, and snippets.

@ctipper
Last active February 1, 2023 21:54
Show Gist options
  • Save ctipper/c54142d247069125479eed13150c751b to your computer and use it in GitHub Desktop.
Save ctipper/c54142d247069125479eed13150c751b to your computer and use it in GitHub Desktop.
Install versions of Adoptium OpenJDK for Windows

Usage: fetch-jdk.sh [-v] <version> [-jdk]
-jdk will install for all users

Script assumes that user is running Git for Windows https://gitforwindows.org/

Requisites are jq and gsudo
Follow instructions at https://scoop.sh/ and then install

scoop bucket add main
scoop install jq
scoop install gsudo
#!/bin/sh
JDK_VERSION='17'
SUDO_COMMAND='gsudo '
INSTALL_DIR="${HOME}/Applications"
JDK_DIR="/c/Program Files/Eclipse Adoptium"
ADOPTIUM_DIR="C:\\Program Files\\Eclipse Adoptium"
if [ ! -z "${SUDO_COMMAND}" ]
then
echo "The script might prompt for elevated privileges. This is because"
echo "sudo is used to gain root permissions to manipulate the software package"
echo
fi
while getopts ':v:' OPTION; do
case "$OPTION" in
v)
JDK_VERSION=${OPTARG}
echo "JDK requested is ${JDK_VERSION}"
shift "$(($OPTIND -1))"
;;
?)
# echo "Usage: $(basename $0) [-v] <version> [-jdk]"
;;
esac
done
JDK_URI="https://api.adoptium.net/v3/binary/latest/${JDK_VERSION}/ga/windows/x64/jdk/hotspot/normal/eclipse/"
JDK_STRING="project=jdk"
RELEASE_INFO="https://api.adoptium.net/v3/assets/feature_releases/${JDK_VERSION}/ga/"
RELEASE_STRING="architecture=x64&heap_size=normal&image_type=jdk&os=windows&page=0&page_size=10&project=jdk&sort_method=DEFAULT&sort_order=DESC&vendor=eclipse"
# download jdk
TMPFILE=`mktemp`
TMPJSON=`mktemp`
echo "Downloading ${JDK_URI}..."
curl -G -H 'accept: */*' -L "${JDK_URI}" -d "${JDK_STRING}" > "${TMPFILE}"
# query versions
curl -G -H 'accept: application/json' -L "${RELEASE_INFO}" -d "${RELEASE_STRING}" > "${TMPJSON}"
# checksums
EXPECTED_SHA256=`jq -r '.[0].binaries[0].package.checksum' "${TMPJSON}"`
REAL_SHA256=`shasum -a 256 "${TMPFILE}" |cut -d " " -f 1`
echo "Expected SHA256 checksum: ${EXPECTED_SHA256}"
echo "File SHA256 checksum: ${REAL_SHA256}"
if [ "${EXPECTED_SHA256}" != "${REAL_SHA256}" ]; then
echo "Cleaning up..."
rm "${TMPFILE}"
echo "Checksum mismatch (using URI below)! Exiting."
echo "$RELEASE_INFO"
exit
fi
# unpack to install directory
RELEASE_NAME=`jq -r '.[0].release_name' ${TMPJSON}`
echo "Unpacking ${RELEASE_NAME}"
cd ${INSTALL_DIR}
rm -r "${RELEASE_NAME}"
unzip "${TMPFILE}" >/dev/null 2>&1
# recreate symlink
rm jdk-${JDK_VERSION}.jdk
${SUDO_COMMAND}powershell New-Item -ItemType SymbolicLink -Path jdk-${JDK_VERSION}.jdk -Target ${RELEASE_NAME}
if [[ $1 == "-jdk" ]]; then
# unpack to JDK directory
echo "Unpacking ${RELEASE_NAME} to ${ADOPTIUM_DIR}"
cd "${JDK_DIR}" && ${SUDO_COMMAND}unzip "${TMPFILE}" >/dev/null 2>&1 && ${SUDO_COMMAND}mv "${RELEASE_NAME}" "${RELEASE_NAME}-hotspot"
echo "Set env JAVA_HOME to ${ADOPTIUM_DIR}\\${RELEASE_NAME}-hotspot"
${SUDO_COMMAND}powershell "[System.Environment]::SetEnvironmentVariable('JAVA_HOME','${ADOPTIUM_DIR}\\${RELEASE_NAME}-hotspot','Machine')"
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment