Skip to content
This repository was archived by the owner on Nov 30, 2023. It is now read-only.

Commit 5c84b7f

Browse files
authored
Improve handling of JDK 8 install for container-features (#1066)
1 parent f78722d commit 5c84b7f

File tree

2 files changed

+38
-5
lines changed

2 files changed

+38
-5
lines changed

script-library/container-features/src/features.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@
188188
"type": "option",
189189
"default": false,
190190
"init": true,
191-
"buildArg": "_VSC_INSTALL_GIT",
191+
"buildArg": "_VSC_INSTALL_GIT",
192192
"include": [
193193
"azure-cli",
194194
"cpp",
@@ -605,7 +605,8 @@
605605
"PATH": "${SDKMAN_DIR}/bin:${SDKMAN_DIR}/candidates/java/current/bin:${PATH}"
606606
},
607607
"settings": {
608-
"java.home": "/usr/local/sdkman/candidates/java/current"
608+
"java.home": "/extension-java-home",
609+
"java.import.gradle.java.home": "/usr/local/sdkman/candidates/java/current"
609610
},
610611
"include": [
611612
"azure-cli",

script-library/container-features/src/java-wrapper.sh

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,41 @@ USERNAME=${3:-"automatic"}
99
UPDATE_RC=${4:-"true"}
1010
ADDITIONAL_JAVA_VERSION=11
1111

12-
/tmp/build-features/java-debian.sh "${JAVA_VERSION}" "${SDKMAN_DIR}" "${USERNAME}" "${UPDATE_RC}"
13-
14-
# If the user selected JDK 8, install the JDK 11 as well
12+
is_jdk_8="false"
1513
if echo "${JAVA_VERSION}" | grep -E '^8([\s\.]|$)' > /dev/null 2>&1; then
14+
is_jdk_8="true"
15+
fi
16+
17+
# If the user selected JDK 8, install the JDK 11 as well since this is needed by the Java extension
18+
if [ "${is_jdk_8}" = "true" ]; then
19+
echo "(*) Installing JDK ${ADDITIONAL_JAVA_VERSION} as Java VS Code extension requires a recent JDK..."
1620
/tmp/build-features/java-debian.sh "${ADDITIONAL_JAVA_VERSION}" "${SDKMAN_DIR}" "${USERNAME}" "${UPDATE_RC}"
21+
jdk_11_folder="$(ls --format=single-column ${SDKMAN_DIR}/candidates/java | grep -oE -m 1 '11\..+')"
22+
ln -s "${SDKMAN_DIR}/candidates/java/${jdk_11_folder}" /extension-java-home
23+
24+
# Determine the appropriate non-root user
25+
username=""
26+
possible_users=("vscode" "node" "codespace" "$(awk -v val=1000 -F ":" '$3==val{print $1}' /etc/passwd)")
27+
for current_user in ${possible_users[@]}; do
28+
if id -u ${current_user} > /dev/null 2>&1; then
29+
username=${current_user}
30+
break
31+
fi
32+
done
33+
if [ "${username}" = "" ]; then
34+
username=root
35+
fi
36+
else
37+
ln -s ${SDKMAN_DIR}/candidates/java/current /extension-java-home
1738
fi
39+
40+
echo "(*) Installing JDK ${JAVA_VERSION}..."
41+
/tmp/build-features/java-debian.sh "${JAVA_VERSION}" "${SDKMAN_DIR}" "${USERNAME}" "${UPDATE_RC}"
42+
if [ "${is_jdk_8}" = "true" ]; then
43+
# Set current and default version to last SDK installed
44+
jdk_full_version="$(ls --format=single-column "${SDKMAN_DIR}/candidates/java" | sort -rV | grep -oE -m 1 "${JAVA_VERSION}\\..+" )"
45+
echo "(*) Setting default JDK to ${jdk_full_version}..."
46+
. ${SDKMAN_DIR}/bin/sdkman-init.sh
47+
sdk use java "${jdk_full_version}"
48+
sdk default java "${jdk_full_version}"
49+
fi

0 commit comments

Comments
 (0)