Systematize JDK in python scripts and upgrade from 11 to 17.

Change-Id: I3ecd1158d8d68035294d02fd0ce77b1e08e558ca
diff --git a/PRESUBMIT.py b/PRESUBMIT.py
index e06d247..333631f 100644
--- a/PRESUBMIT.py
+++ b/PRESUBMIT.py
@@ -14,7 +14,7 @@
 sys.path.append(
     os.path.join(path.dirname(inspect.getfile(lambda: None)), 'tools'))
 from tools.utils import EnsureDepFromGoogleCloudStorage
-from tools.jdk import GetJavaExecutable
+from tools.jdk import GetJavaExecutable, GetDefaultJdkHome
 
 KOTLIN_FMT_JAR = path.join('third_party', 'google', 'google-kotlin-format',
                            '0.54', 'ktfmt-0.54-jar-with-dependencies.jar')
@@ -126,7 +126,10 @@
     }
     needs_formatting_count = 0
     for format in ['--kotlinlang-style', '--google-style']:
-        cmd = [GetJavaExecutable(), '-jar', KOTLIN_FMT_JAR, format, '-n']
+        cmd = [
+            GetJavaExecutable(GetDefaultJdkHome()), '-jar', KOTLIN_FMT_JAR,
+            format, '-n'
+        ]
         to_format = paths_to_format[format]
         if len(to_format) > 0:
             cmd.extend(to_format)
@@ -156,7 +159,8 @@
 or bypass the checks with:
 
   git cl upload --bypass-hooks
-    """.format(java=GetJavaExecutable(), fmt_jar=KOTLIN_FMT_JAR)
+    """.format(java=GetJavaExecutable(GetDefaultJdkHome()),
+               fmt_jar=KOTLIN_FMT_JAR)
 
 
 def CheckJavaFormatting(path, branch, output_api, results):
diff --git a/tools/api_sample_coverage.py b/tools/api_sample_coverage.py
index 3c4abdf..070bafd 100755
--- a/tools/api_sample_coverage.py
+++ b/tools/api_sample_coverage.py
@@ -28,7 +28,7 @@
     if output_dir is None:
         output_dir = ''
 
-    java_executable = jdk.GetJavaExecutable()
+    java_executable = jdk.GetJavaExecutable(jdk.GetDefaultJdkHome())
     printseeds_path = os.path.join(output_dir, 'keep-seeds.txt')
     printseeds_args = [
         java_executable,
diff --git a/tools/archive.py b/tools/archive.py
index e4c549f..3506773 100755
--- a/tools/archive.py
+++ b/tools/archive.py
@@ -55,8 +55,8 @@
 
 def get_version():
     output = subprocess.check_output([
-        jdk.GetJavaExecutable(), '-cp', utils.R8_JAR, 'com.android.tools.r8.R8',
-        '--version'
+        jdk.GetJavaExecutable(jdk.GetDefaultJdkHome()), '-cp', utils.R8_JAR,
+        'com.android.tools.r8.R8', '--version'
     ]).decode('utf-8')
     r8_version = output.splitlines()[0].strip()
     return r8_version.split()[1]
diff --git a/tools/archive_desugar_jdk_libs.py b/tools/archive_desugar_jdk_libs.py
index 2424070..bdb5741 100755
--- a/tools/archive_desugar_jdk_libs.py
+++ b/tools/archive_desugar_jdk_libs.py
@@ -153,9 +153,9 @@
 
 
 def GetJavaEnv(androidHomeTemp):
-    java_env = dict(os.environ, JAVA_HOME=jdk.GetJdk17Home())
+    java_env = dict(os.environ, JAVA_HOME=jdk.GetDefaultJdkHome())
     java_env['PATH'] = java_env['PATH'] + os.pathsep + os.path.join(
-        jdk.GetJdk17Home(), 'bin')
+        jdk.GetDefaultJdkHome(), 'bin')
     java_env['GRADLE_OPTS'] = '-Xmx1g'
     java_env['ANDROID_HOME'] = androidHomeTemp
     return java_env
@@ -275,7 +275,7 @@
         undesugared_jar = os.path.join(tmp, 'undesugared.jar')
         buildLibs = os.path.join(defines.REPO_ROOT, 'build', 'libs')
         cmd = [
-            jdk.GetJavaExecutable(), '-cp',
+            jdk.GetJavaExecutable(jdk.GetDefaultJdkHome()), '-cp',
             '%s:%s:%s:%s' % (utils.R8_JAR, utils.R8_TESTBASE_JAR,
                              utils.R8_TESTS_JAR, utils.R8_TESTS_DEPS_JAR),
             'com.android.tools.r8.desugar.desugaredlibrary.jdk11.DesugaredLibraryJDK11Undesugarer',
@@ -310,14 +310,15 @@
 def BuildAndUpload(options, variant):
     desugar_jdk_libs_hash = ''
     with open(DESUGAR_JDK_LIBS_HASH_FILE, 'r') as input_hash:
-        desugar_jdk_libs_hash = input_hash.readline()
+        desugar_jdk_libs_hash = input_hash.readline().strip()
     if options.build_only:
         with utils.TempDir() as checkout_dir:
             CloneDesugaredLibrary(options.github_account, checkout_dir,
                                   desugar_jdk_libs_hash)
+            version = GetVersion(
+                os.path.join(checkout_dir, VERSION_MAP[variant]))
             (library_jar,
-             maven_zip) = BuildDesugaredLibrary(checkout_dir, variant,
-                                                desugar_jdk_libs_hash)
+             maven_zip) = BuildDesugaredLibrary(checkout_dir, variant, version)
             shutil.copyfile(
                 library_jar,
                 os.path.join(options.build_only, os.path.basename(library_jar)))
@@ -385,8 +386,7 @@
     utils.EnsureDepFromGoogleCloudStorage(utils.BAZEL_SHA_FILE, 'Bazel tool')
     utils.EnsureDepFromGoogleCloudStorage(utils.JAVA8_SHA_FILE,
                                           'Java 8 runtime')
-    utils.EnsureDepFromGoogleCloudStorage(utils.JAVA17_SHA_FILE,
-                                          'Java 17 runtime')
+    gradle.ensure_deps()
     utils.EnsureDepFromGoogleCloudStorage(utils.DESUGAR_JDK_LIBS_11_SHA_FILE,
                                           'desugar_jdk_libs_11')
 
diff --git a/tools/asmifier.py b/tools/asmifier.py
index a59ee3d..ab60cd6 100755
--- a/tools/asmifier.py
+++ b/tools/asmifier.py
@@ -19,7 +19,7 @@
 
 def run(args):
     cmd = []
-    cmd.append(jdk.GetJavaExecutable())
+    cmd.append(jdk.GetJavaExecutable(jdk.GetDefaultJdkHome()))
     cp = ":".join([ASM_JAR, ASM_UTIL_JAR])
     print(cp)
     cmd.extend(['-cp', cp])
diff --git a/tools/assistant/instrument_with_assistant_and_run_test.py b/tools/assistant/instrument_with_assistant_and_run_test.py
index 0381c3d..f8738b3 100755
--- a/tools/assistant/instrument_with_assistant_and_run_test.py
+++ b/tools/assistant/instrument_with_assistant_and_run_test.py
@@ -54,8 +54,8 @@
 def export_keep_info(options, temp_dir):
     with utils.TempDir() as compiledump_temp_dir:
         otherargs = [
-            '-Dcom.android.tools.r8.assistant.exportFinalKeepInfoCollection=%s' %
-            os.path.join(temp_dir, 'keepinfo')
+            '-Dcom.android.tools.r8.assistant.exportFinalKeepInfoCollection=%s'
+            % os.path.join(temp_dir, 'keepinfo')
         ]
         args_for_r8 = AttrDict(
             vars(
@@ -118,7 +118,8 @@
         keep_info_dir = os.path.join(temp_dir, 'keepinfo')
         if os.path.exists(log_file) and os.path.exists(keep_info_dir):
             cmd = [
-                jdk.GetJavaExecutable(), '-cp', utils.R8_JAR,
+                jdk.GetJavaExecutable(jdk.GetDefaultJdkHome()), '-cp',
+                utils.R8_JAR,
                 'com.android.tools.r8.assistant.postprocessing.CheckReflectiveOperations',
                 log_file, keep_info_dir
             ]
diff --git a/tools/build_sample_apk.py b/tools/build_sample_apk.py
index e6adfcf..d53f54e 100755
--- a/tools/build_sample_apk.py
+++ b/tools/build_sample_apk.py
@@ -22,7 +22,7 @@
 DEFAULT_AAPT2 = 'aapt2'  # Assume in path.
 DEFAULT_D8 = os.path.join(utils.REPO_ROOT, 'tools', 'd8.py')
 DEFAULT_DEXSPLITTER = os.path.join(utils.REPO_ROOT, 'tools', 'dexsplitter.py')
-DEFAULT_JAVAC = jdk.GetJavacExecutable()
+DEFAULT_JAVAC = jdk.GetJavacExecutable(jdk.GetCompilationJdkHome())
 SRC_LOCATION = 'src/com/android/tools/r8/sample/{app}/*.java'
 DEFAULT_KEYSTORE = os.path.join(os.getenv('HOME'), '.android', 'debug.keystore')
 PACKAGE_PREFIX = 'com.android.tools.r8.sample'
diff --git a/tools/compiledump.py b/tools/compiledump.py
index e5a2653..01da6e4 100755
--- a/tools/compiledump.py
+++ b/tools/compiledump.py
@@ -622,7 +622,7 @@
     return len(version) == 40
 
 
-def run1(out, args, otherargs, jdkhome=None, worker_id=None):
+def run1(out, args, otherargs, jdkhome=jdk.GetDefaultJdkHome(), worker_id=None):
     jvmargs = []
     compilerargs = []
     for arg in otherargs:
diff --git a/tools/create_maven_release.py b/tools/create_maven_release.py
index c1811da..4dac001 100755
--- a/tools/create_maven_release.py
+++ b/tools/create_maven_release.py
@@ -315,7 +315,7 @@
         lint_dir = join(configuration_dir, 'lint')
         makedirs(lint_dir)
         cmd = [
-            jdk.GetJavaExecutable(), '-cp', utils.R8_JAR,
+            jdk.GetJavaExecutable(jdk.GetDefaultJdkHome()), '-cp', utils.R8_JAR,
             'com.android.tools.r8.ir.desugar.desugaredlibrary.lint.GenerateDesugaredLibraryLintFiles',
             configuration, implementation, lint_dir,
             utils.get_android_jar(34, 0)
@@ -333,7 +333,7 @@
 def convert_desugar_configuration(configuration, conversions, implementation,
                                   machine_configuration):
     cmd = [
-        jdk.GetJavaExecutable(), '-cp', utils.R8_JAR,
+        jdk.GetJavaExecutable(jdk.GetDefaultJdkHome()), '-cp', utils.R8_JAR,
         'com.android.tools.r8.ir.desugar.desugaredlibrary.specificationconversion.DesugaredLibraryConverter',
         configuration, implementation, conversions,
         utils.get_android_jar(33, 0), machine_configuration
diff --git a/tools/create_r8lib.py b/tools/create_r8lib.py
index 208e8fa..3f4acc8 100755
--- a/tools/create_r8lib.py
+++ b/tools/create_r8lib.py
@@ -81,12 +81,15 @@
         fd = open(name, 'w')
         fd.write(VERSION_EXTRACTOR)
         fd.close()
-        cmd = [jdk.GetJavacExecutable(), '-cp', r8jar, name]
+        cmd = [
+            jdk.GetJavacExecutable(jdk.GetCompilationJdkHome()), '-cp', r8jar,
+            name
+        ]
         print(' '.join(cmd))
         cp_separator = ';' if utils.IsWindows() else ':'
         subprocess.check_call(cmd)
         output = subprocess.check_output([
-            jdk.GetJavaExecutable(), '-cp',
+            jdk.GetJavaExecutable(jdk.GetDefaultJdkHome()), '-cp',
             cp_separator.join([r8jar, os.path.dirname(name)]),
             'VersionExtractor'
         ]).decode('UTF-8').strip()
@@ -139,7 +142,7 @@
     map_id_template = version + variant
     source_file_template = 'R8_%MAP_ID_%MAP_HASH'
     # TODO(b/139725780): See if we can remove or lower the heap size (-Xmx8g).
-    cmd = [jdk.GetJavaExecutable(), '-Xmx8g', '-ea']
+    cmd = [jdk.GetJavaExecutable(jdk.GetDefaultJdkHome()), '-Xmx8g', '-ea']
     if args.debug_agent:
         cmd.extend([
             '-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:5005'
@@ -162,7 +165,7 @@
     cmd.extend(['--pg-conf-output', args.output + '.config'])
     cmd.extend(['--pg-map-output', args.output + '.map'])
     cmd.extend(['--partition-map-output', args.output + '_map.zip'])
-    cmd.extend(['--lib', jdk.GetDefaultJdkHome()])
+    cmd.extend(['--lib', jdk.GetCompilationJdkHome()])
     if args.pg_conf:
         for pgconf in args.pg_conf:
             cmd.extend(['--pg-conf', pgconf])
diff --git a/tools/gradle.py b/tools/gradle.py
index 045f338..73dc553 100755
--- a/tools/gradle.py
+++ b/tools/gradle.py
@@ -61,9 +61,9 @@
 
 def get_java_env(env):
     java_env = dict(env if env else os.environ,
-                    JAVA_HOME=jdk.GetGradleJdkHome())
+                    JAVA_HOME=jdk.GetDefaultJdkHome())
     java_env['PATH'] = java_env['PATH'] + os.pathsep + os.path.join(
-        jdk.GetGradleJdkHome(), 'bin')
+        jdk.GetDefaultJdkHome(), 'bin')
     java_env['GRADLE_OPTS'] = '-Xmx1g'
     return java_env
 
diff --git a/tools/jdk.py b/tools/jdk.py
old mode 100755
new mode 100644
index 04db0ee..90f6994
--- a/tools/jdk.py
+++ b/tools/jdk.py
@@ -1,10 +1,8 @@
-#!/usr/bin/env python3
 # Copyright (c) 2019, the R8 project authors. Please see the AUTHORS file
 # for details. All rights reserved. Use of this source code is governed by a
 # BSD-style license that can be found in the LICENSE file.
 
 import os
-import sys
 
 import defines
 
@@ -13,14 +11,16 @@
 ALL_JDKS = ['openjdk-9.0.4', 'jdk-11', 'jdk-17', 'jdk-21', 'jdk-25']
 
 
+# This JDK is used for everything except the compilation of the compiler.
 def GetDefaultJdkHome():
-    return GetJdk11Home()
-
-
-def GetGradleJdkHome():
     return GetJdk17Home()
 
 
+# This JDK is used for compilation and tasks related to compilation of the compiler.
+def GetCompilationJdkHome():
+    return GetJdk11Home()
+
+
 def GetJdkHome(name):
     if name == 'jdk8':
         return GetJdk8Home()
@@ -41,9 +41,8 @@
     elif defines.IsWindows():
         return os.path.join(root, 'windows')
     else:
-        raise Exception(
-            'Unsupported platform'
-            ' (not detected as either of Linux, macOS or Windows)')
+        raise Exception('Unsupported platform'
+                        ' (not detected as either of Linux, macOS or Windows)')
 
 
 def GetAllJdkDirs():
@@ -88,27 +87,16 @@
         return os.environ['JAVA_HOME']
 
 
-def GetJavaExecutable(jdkHome=None):
-    jdkHome = jdkHome if jdkHome else GetDefaultJdkHome()
+def GetJavaExecutable(jdkHome):
     executable = 'java.exe' if defines.IsWindows() else 'java'
-    return os.path.join(jdkHome, 'bin', executable) if jdkHome else executable
+    return os.path.join(jdkHome, 'bin', executable)
 
 
-def GetJavacExecutable(jdkHome=None):
-    jdkHome = jdkHome if jdkHome else GetDefaultJdkHome()
+def GetJavacExecutable(jdkHome):
     executable = 'javac.exe' if defines.IsWindows() else 'javac'
-    return os.path.join(jdkHome, 'bin', executable) if jdkHome else executable
+    return os.path.join(jdkHome, 'bin', executable)
 
 
-def GetJstackExecutable(jdkHome=None):
-    jdkHome = jdkHome if jdkHome else GetDefaultJdkHome()
+def GetJstackExecutable(jdkHome):
     executable = 'jstack.exe' if defines.IsWindows() else 'jstack'
-    return os.path.join(jdkHome, 'bin', executable) if jdkHome else executable
-
-
-def Main():
-    print(GetDefaultJdkHome())
-
-
-if __name__ == '__main__':
-    sys.exit(Main())
+    return os.path.join(jdkHome, 'bin', executable)
diff --git a/tools/proguard.py b/tools/proguard.py
index 2b45fb0..9676dc0 100755
--- a/tools/proguard.py
+++ b/tools/proguard.py
@@ -59,7 +59,10 @@
     cmd = []
     if jvmArgs:
         cmd.extend(jvmArgs)
-    cmd.extend([jdk.GetJavaExecutable(), '-jar', getJar(version)])
+    cmd.extend([
+        jdk.GetJavaExecutable(jdk.GetDefaultJdkHome()), '-jar',
+        getJar(version)
+    ])
     cmd.extend(args)
     return cmd
 
diff --git a/tools/retrace.py b/tools/retrace.py
index 98dbabd..bca11fe 100755
--- a/tools/retrace.py
+++ b/tools/retrace.py
@@ -34,7 +34,9 @@
         default=None,
         action='store_true',
         help='Use the exclude-deps version of the mapping file.')
-    parser.add_argument('--map', help='Path to r8lib map in text format.', default=None)
+    parser.add_argument('--map',
+                        help='Path to r8lib map in text format.',
+                        default=None)
     parser.add_argument('--partition-map',
                         '--partition_map',
                         help='Path to r8lib map in ZIP partition format.',
@@ -76,7 +78,7 @@
         default=False,
         action='store_true',
         help='Disable use of partition map (unless one was explicitly specified'
-            ' with --partition-map).')
+        ' with --partition-map).')
     return parser.parse_args()
 
 
@@ -87,7 +89,8 @@
     if args.partition_map:
         return (True, args.partition_map)
 
-    for use_partition_map in ([False] if args.disable_partition_map else [True, False]):
+    for use_partition_map in ([False]
+                              if args.disable_partition_map else [True, False]):
         # Try to extract map from the tag/version options.
         map_path = utils.find_cloud_storage_file_from_options(
             'r8lib.jar_map.zip' if use_partition_map else 'r8lib.jar.map', args)
@@ -127,7 +130,8 @@
     return r8_source_file
 
 
-def get_map_from_r8_source_file_attribute(args, r8_source_file, use_partition_map):
+def get_map_from_r8_source_file_attribute(args, r8_source_file,
+                                          use_partition_map):
     (header, r8_version_or_hash, maphash) = r8_source_file.split('_')
     # If the command-line specified --exclude-deps then assume it is as previous
     # versions will not be marked as such in the source-file line.
@@ -149,9 +153,8 @@
         # Look for mapping file on GCS based on the version or commit hash
         # found in the source file atttribute.
         map_path = utils.find_cloud_storage_file_from_options(
-            'r8lib' + ('-exclude-deps' if is_excldeps else '')
-            + ('.jar_map.zip' if use_partition_map else '.jar.map'),
-            args)
+            'r8lib' + ('-exclude-deps' if is_excldeps else '') +
+            ('.jar_map.zip' if use_partition_map else '.jar.map'), args)
 
         if map_path:
             # Partition map is not validated. The mapping file header is
@@ -220,7 +223,7 @@
         debug=False,
         regex=None,
         verbose=False):
-    retrace_args = [jdk.GetJavaExecutable()]
+    retrace_args = [jdk.GetJavaExecutable(jdk.GetDefaultJdkHome())]
 
     if debug:
         retrace_args.append(
@@ -230,9 +233,7 @@
     if not r8jar:
         r8jar = utils.R8_JAR if no_r8lib else utils.R8LIB_JAR
 
-    retrace_args += [
-        '-cp', r8jar, 'com.android.tools.r8.retrace.Retrace'
-    ]
+    retrace_args += ['-cp', r8jar, 'com.android.tools.r8.retrace.Retrace']
     if is_partition_map:
         retrace_args.extend(['--partition-map', map_path])
     else:
diff --git a/tools/run_benchmark.py b/tools/run_benchmark.py
index fbec52c..8f551d5 100755
--- a/tools/run_benchmark.py
+++ b/tools/run_benchmark.py
@@ -30,7 +30,7 @@
 def get_jdk_home(options, benchmark):
     if options.golem:
         return os.path.join(get_golem_resource_path(benchmark), 'linux')
-    return None
+    return jdk.GetDefaultJdkHome()
 
 
 def parse_options(argv):
diff --git a/tools/tag_versions.py b/tools/tag_versions.py
index bcaf056..d5f0a85 100755
--- a/tools/tag_versions.py
+++ b/tools/tag_versions.py
@@ -69,7 +69,7 @@
         utils.REPO_ROOT,
         'src/main/java/com/android/tools/r8/utils/PrintR8Version.java')
     cmd = [
-        jdk.GetJavacExecutable(),
+        jdk.GetJavacExecutable(jdk.GetCompilationJdkHome()),
         wrapper_file,
         '-d',
         temp,
@@ -80,6 +80,7 @@
     subprocess.check_output(cmd)
     return temp
 
+
 # Testing info: To delete a tag use
 #
 # gob-curl --request DELETE https://r8-review.git.corp.google.com/a/projects/r8/tags/<tag>
@@ -90,14 +91,11 @@
         "revision": hash
     })
     cmd = ' '.join([
-        'gob-curl',
-        '--header',
-        '"Content-Type: application/json; charset=UTF-8"',
-        '--request',
-        'PUT',
-        '--data',
-        "'{data}'".format(data=data),
-        'https://r8-review.git.corp.google.com/a/projects/r8/tags/{tag}'.format(tag=tag)
+        'gob-curl', '--header',
+        '"Content-Type: application/json; charset=UTF-8"', '--request', 'PUT',
+        '--data', "'{data}'".format(data=data),
+        'https://r8-review.git.corp.google.com/a/projects/r8/tags/{tag}'.format(
+            tag=tag)
     ])
     result = subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True)
     print(result)
@@ -150,7 +148,7 @@
             return 1
         print_version_helper = prepare_print_version(utils.R8_JAR, temp)
         output = subprocess.check_output([
-            jdk.GetJavaExecutable(), '-cp',
+            jdk.GetJavaExecutable(jdk.GetDefaultJdkHome()), '-cp',
             ':'.join([jar, print_version_helper]),
             'com.android.tools.r8.utils.PrintR8Version'
         ]).decode('utf-8')
@@ -161,7 +159,8 @@
         run(args, ['git', 'tag', '-f', tag, '-m', message, hash])
         if args.use_push:
             run(args, [
-                'git', 'push', '-o', 'push-justification=b/313360935', 'origin', tag
+                'git', 'push', '-o', 'push-justification=b/313360935', 'origin',
+                tag
             ])
         else:
             gerrit_tag(args, tag, hash, message)
@@ -187,8 +186,8 @@
             run(args, ['git', 'tag', '-a', version, '-m', message, hash])
             if args.use_push:
                 run(args, [
-                    'git', 'push', '-o', 'push-justification=b/313360935', 'origin',
-                    version
+                    'git', 'push', '-o', 'push-justification=b/313360935',
+                    'origin', version
                 ])
             else:
                 gerrit_tag(args, version, hash, message)
diff --git a/tools/test.py b/tools/test.py
index 3d4ad10..78dfb4c 100755
--- a/tools/test.py
+++ b/tools/test.py
@@ -713,7 +713,8 @@
             # ricow    184313  2.6  0.0 36839068 31808 ?      Sl   09:53   0:00 /us..
             columns = l.split()
             pid = columns[1]
-            return_value = subprocess.call([jdk.GetJstackExecutable(), pid])
+            return_value = subprocess.call(
+                [jdk.GetJstackExecutable(jdk.GetDefaultJdkHome()), pid])
             if return_value:
                 print('Could not jstack %s' % l)
 
diff --git a/tools/toolhelper.py b/tools/toolhelper.py
index 126226e..9913767 100644
--- a/tools/toolhelper.py
+++ b/tools/toolhelper.py
@@ -41,7 +41,7 @@
         ])
     if track_memory_file:
         cmd.extend(['tools/track_memory.sh', track_memory_file])
-    cmd.append(jdk.GetJavaExecutable())
+    cmd.append(jdk.GetJavaExecutable(jdk.GetDefaultJdkHome()))
     if extra_args:
         cmd.extend(extra_args)
     if debug_agent is None:
diff --git a/tools/utils.py b/tools/utils.py
index 920974e..f989303 100644
--- a/tools/utils.py
+++ b/tools/utils.py
@@ -711,7 +711,10 @@
 # Return a dictionary: {segment_name -> segments_size}
 def getDexSegmentSizes(dex_files):
     assert len(dex_files) > 0
-    cmd = [jdk.GetJavaExecutable(), '-jar', R8_JAR, 'dexsegments']
+    cmd = [
+        jdk.GetJavaExecutable(jdk.GetDefaultJdkHome()), '-jar', R8_JAR,
+        'dexsegments'
+    ]
     cmd.extend(dex_files)
     PrintCmd(cmd)
     output = subprocess.check_output(cmd).decode('utf-8')
@@ -733,7 +736,7 @@
 # Return a dictionary: {segment_name -> segments_size}
 def getCfSegmentSizes(cfFile):
     cmd = [
-        jdk.GetJavaExecutable(), '-cp', CF_SEGMENTS_TOOL,
+        jdk.GetJavaExecutable(jdk.GetDefaultJdkHome()), '-cp', CF_SEGMENTS_TOOL,
         'com.android.tools.r8.cf_segments.MeasureLib', cfFile
     ]
     PrintCmd(cmd)
@@ -771,7 +774,7 @@
 
 # Ensure that we are not benchmarking with a google jvm.
 def check_java_version():
-    cmd = [jdk.GetJavaExecutable(), '-version']
+    cmd = [jdk.GetJavaExecutable(jdk.GetDefaultJdkHome()), '-version']
     output = subprocess.check_output(cmd,
                                      stderr=subprocess.STDOUT).decode('utf-8')
     m = re.search('openjdk version "([^"]*)"', output)