Merge "Run dx tests with Java 11 by default"
diff --git a/dx/etc/dx b/dx/etc/dx
index 632af43..05ad6b8 100644
--- a/dx/etc/dx
+++ b/dx/etc/dx
@@ -86,4 +86,4 @@
     jarpath="$libdir/$jarfile"
 fi
 
-exec java $javaOpts -jar "$jarpath" "$@"
+exec ${JAVA:-java} $javaOpts -jar "$jarpath" "$@"
diff --git a/dx/etc/jasmin b/dx/etc/jasmin
index f44c16f..20f45b5 100644
--- a/dx/etc/jasmin
+++ b/dx/etc/jasmin
@@ -36,4 +36,4 @@
 
 libdir=`dirname $progdir`/framework
 
-exec java -jar $libdir/jasmin.jar "$@"
+exec ${JAVA:-java} -jar $libdir/jasmin.jar "$@"
diff --git a/dx/etc/mainDexClasses b/dx/etc/mainDexClasses
index 4092a91..adee89c 100755
--- a/dx/etc/mainDexClasses
+++ b/dx/etc/mainDexClasses
@@ -177,4 +177,4 @@
   -libraryjars "${shrinkedAndroidJar}" -dontoptimize -dontobfuscate -dontpreverify \
   -include "${baserules}" -include "${extrarules}" 1>/dev/null || exit 10
 
-java -cp "$jarpath" com.android.multidex.MainDexListBuilder ${disableKeepAnnotated} "${tmpOut}" ${@} ||  exit 11
+${JAVA} -cp "$jarpath" com.android.multidex.MainDexListBuilder ${disableKeepAnnotated} "${tmpOut}" ${@} ||  exit 11
diff --git a/dx/tests/029-unit-Bits/run b/dx/tests/029-unit-Bits/run
index 6bdcac1..d6c733c 100644
--- a/dx/tests/029-unit-Bits/run
+++ b/dx/tests/029-unit-Bits/run
@@ -27,7 +27,7 @@
     fi
 done
 
-java -cp $dxtestsjar:$dxjar:$junitjar junit.textui.TestRunner com.android.dx.util.BitsTest > unit-out.txt 2>&1
+${JAVA} -cp $dxtestsjar:$dxjar:$junitjar junit.textui.TestRunner com.android.dx.util.BitsTest > unit-out.txt 2>&1
 
 if [ "$?" = "0" ]; then
     echo "Yay!"
diff --git a/dx/tests/033-unit-IntList/run b/dx/tests/033-unit-IntList/run
index b226ad4..936e533 100644
--- a/dx/tests/033-unit-IntList/run
+++ b/dx/tests/033-unit-IntList/run
@@ -27,7 +27,7 @@
     fi
 done
 
-java -cp $dxtestsjar:$dxjar:$junitjar junit.textui.TestRunner com.android.dx.util.IntListTest > unit-out.txt 2>&1
+${JAVA} -cp $dxtestsjar:$dxjar:$junitjar junit.textui.TestRunner com.android.dx.util.IntListTest > unit-out.txt 2>&1
 
 if [ "$?" = "0" ]; then
     echo "Yay!"
diff --git a/dx/tests/116-leb128/run b/dx/tests/116-leb128/run
index bc384a3..12b2f69 100644
--- a/dx/tests/116-leb128/run
+++ b/dx/tests/116-leb128/run
@@ -27,7 +27,7 @@
     fi
 done
 
-java -classpath $dxjar:$junitjar:. junit.textui.TestRunner com.android.dx.util.Leb128UtilsTest > unit-out.txt 2>&1
+${JAVA} -classpath $dxjar:$junitjar:. junit.textui.TestRunner com.android.dx.util.Leb128UtilsTest > unit-out.txt 2>&1
 if [ "$?" = "0" ]; then
     echo "Yay!"
 else
diff --git a/dx/tests/117-modified-utf8/run b/dx/tests/117-modified-utf8/run
index 7a2143a..db9b7c5 100644
--- a/dx/tests/117-modified-utf8/run
+++ b/dx/tests/117-modified-utf8/run
@@ -27,7 +27,7 @@
     fi
 done
 
-java -classpath $dxjar:$junitjar:. junit.textui.TestRunner com.android.dx.util.Mutf8Test > unit-out.txt 2>&1
+${JAVA} -classpath $dxjar:$junitjar:. junit.textui.TestRunner com.android.dx.util.Mutf8Test > unit-out.txt 2>&1
 
 if [ "$?" = "0" ]; then
     echo "Yay!"
diff --git a/dx/tests/127-merge-stress/run b/dx/tests/127-merge-stress/run
index a189cb1..ccb055b 100755
--- a/dx/tests/127-merge-stress/run
+++ b/dx/tests/127-merge-stress/run
@@ -69,4 +69,4 @@
   exit 1
 fi
 
-java -cp .:$dxjar -ea -esa com.android.dx.merge.MergeTest "${validdexes[@]}" > /dev/null
+${JAVA} -cp .:$dxjar -ea -esa com.android.dx.merge.MergeTest "${validdexes[@]}" > /dev/null
diff --git a/dx/tests/131-perf/run b/dx/tests/131-perf/run
index b4998fe..91d59a1 100644
--- a/dx/tests/131-perf/run
+++ b/dx/tests/131-perf/run
@@ -68,7 +68,7 @@
   mkdir out
 
   sleep 2
-  java -classpath . ClassGen $first $TEST_SIZE $FIELDS $METHODS || exit 1
+  ${JAVA} -classpath . ClassGen $first $TEST_SIZE $FIELDS $METHODS || exit 1
   first=`expr $TEST_SIZE + 1`
 
   ${JAVAC} ${JAVAC_OPTIONS} -d classes `find src -name '*.java'` || exit 1
diff --git a/dx/tests/134-maindexlist-lambdas/run b/dx/tests/134-maindexlist-lambdas/run
index 4617312..ca63e37 100644
--- a/dx/tests/134-maindexlist-lambdas/run
+++ b/dx/tests/134-maindexlist-lambdas/run
@@ -28,4 +28,4 @@
 
 jar cf classes.jar -C classes .
 jar cf traceOut.jar -C traceOut .
-java -classpath $dxjar com.android.multidex.MainDexListBuilder traceOut.jar classes.jar | sort
+${JAVA} -classpath $dxjar com.android.multidex.MainDexListBuilder traceOut.jar classes.jar | sort
diff --git a/dx/tests/135-invoke-custom/build b/dx/tests/135-invoke-custom/build
index 4d7c400..eb8701d 100755
--- a/dx/tests/135-invoke-custom/build
+++ b/dx/tests/135-invoke-custom/build
@@ -34,5 +34,5 @@
 fi
 
 (cd "${SRC_PATH}" && javac -cp "${ASM_CLASSPATH}" -d "${BUILD_PATH}" invokecustom/*.java) || fail "javac error"
-(cd "${SCRIPT_PATH}" && java -cp "${ASM_CLASSPATH}:${BUILD_PATH}" invokecustom.TestGenerator "${BUILD_PATH}") || fail "generator failure"
+(cd "${SCRIPT_PATH}" && ${JAVA} -cp "${ASM_CLASSPATH}:${BUILD_PATH}" invokecustom.TestGenerator "${BUILD_PATH}") || fail "generator failure"
 (cd "${BUILD_PATH}" && jar cf "${JAR_FILE}" invokecustom/InvokeCustom.class invokecustom/Super.class ) || fail "jar creation error"
diff --git a/dx/tests/135-invoke-custom/info.txt b/dx/tests/135-invoke-custom/info.txt
index ad54d01..14ebe84 100644
--- a/dx/tests/135-invoke-custom/info.txt
+++ b/dx/tests/135-invoke-custom/info.txt
@@ -3,4 +3,4 @@
 
 When modifying this test please ensure that the following produce the same output:
 $ art -cp invokecustom.dex invokecustom.InvokeCustom
-$ java -cp invokecustom.jar invokecustom.InvokeCustom
+$ ${JAVA} -cp invokecustom.jar invokecustom.InvokeCustom
diff --git a/dx/tests/137-dexmerger-dex38/build b/dx/tests/137-dexmerger-dex38/build
index 3a89199..33c7774 100755
--- a/dx/tests/137-dexmerger-dex38/build
+++ b/dx/tests/137-dexmerger-dex38/build
@@ -34,5 +34,5 @@
 fi
 
 (cd "${SRC_PATH}" && javac -cp "${ASM_CLASSPATH}" -d "${BUILD_PATH}" invokecustom/*.java) || fail "javac error"
-(cd "${SCRIPT_PATH}" && java -cp "${ASM_CLASSPATH}:${BUILD_PATH}" invokecustom.TestGenerator "${BUILD_PATH}") || fail "generator failure"
+(cd "${SCRIPT_PATH}" && ${JAVA} -cp "${ASM_CLASSPATH}:${BUILD_PATH}" invokecustom.TestGenerator "${BUILD_PATH}") || fail "generator failure"
 (cd "${BUILD_PATH}" && jar cf "${JAR_FILE}" invokecustom/InvokeCustom*.class invokecustom/Super.class ) || fail "jar creation error"
diff --git a/dx/tests/137-dexmerger-dex38/run b/dx/tests/137-dexmerger-dex38/run
index 65e70b7..70c77ec 100755
--- a/dx/tests/137-dexmerger-dex38/run
+++ b/dx/tests/137-dexmerger-dex38/run
@@ -21,6 +21,6 @@
     dx --min-sdk-version=26 --dex --output="${CLASS/%.class/.dex}" "${CLASS}" 2>&1
   done
 )
-java -cp $(dirname $(which dx))/../framework/dx.jar com.android.dx.merge.DexMerger \
+${JAVA} -cp $(dirname $(which dx))/../framework/dx.jar com.android.dx.merge.DexMerger \
   out.dex invokecustom/*.dex >& /dev/null
 dexdump -d out.dex
diff --git a/dx/tests/142-const-method-handle/build b/dx/tests/142-const-method-handle/build
index 1658bca..df5fe05 100755
--- a/dx/tests/142-const-method-handle/build
+++ b/dx/tests/142-const-method-handle/build
@@ -34,5 +34,5 @@
 fi
 
 (cd "${SRC_PATH}" && javac -cp "${ASM_CLASSPATH}" -d "${BUILD_PATH}" Main.java constmethodhandle/*.java) || fail "javac error"
-(cd "${SCRIPT_PATH}" && java -cp "${ASM_CLASSPATH}:${BUILD_PATH}" constmethodhandle.TestGenerator "${BUILD_PATH}") || fail "generator failure"
+(cd "${SCRIPT_PATH}" && ${JAVA} -cp "${ASM_CLASSPATH}:${BUILD_PATH}" constmethodhandle.TestGenerator "${BUILD_PATH}") || fail "generator failure"
 (cd "${BUILD_PATH}" && jar cf "${JAR_FILE}" Main.class constmethodhandle/ConstTest.class) || fail "jar creation error"
diff --git a/dx/tests/run-test b/dx/tests/run-test
index a781d8d..cf80cc0 100755
--- a/dx/tests/run-test
+++ b/dx/tests/run-test
@@ -35,7 +35,7 @@
 
 if [[ -z "${JAVA_HOME}" ]]; then
     unix=$(uname | tr '[A-Z]' '[a-z]')
-    JAVA_HOME="${progdir}/../../../prebuilts/jdk/jdk8/${unix}-x86"
+    JAVA_HOME="${progdir}/../../../prebuilts/jdk/jdk11/${unix}-x86"
 fi
 
 if [[ ! -d "${JAVA_HOME}" ]]; then
@@ -49,6 +49,12 @@
     exit 1
 fi
 
+export JAVA="${JAVA_HOME}/bin/java"
+if [ "!" -e "$JAVA" ]; then
+    echo "Missing JAVA executable: ${JAVA}" 1>&2
+    exit 1
+fi
+
 info="info.txt"
 run="run"
 expected="expected.txt"