Java 16 toolchain

Closes #13270.

Closes #13274.

Change-Id: I215c2f86a35f87bea0102cf6da5248b19a319d3e
PiperOrigin-RevId: 368591949
diff --git a/tools/jdk/BUILD.tools b/tools/jdk/BUILD.tools
index 7e5fac5..dbf6b80 100644
--- a/tools/jdk/BUILD.tools
+++ b/tools/jdk/BUILD.tools
@@ -383,6 +383,15 @@
     target_version = "15",
 )
 
+# A toolchain that targets java 16.
+default_java_toolchain(
+    name = "toolchain_jdk_16",
+    configuration = dict(),
+    java_runtime = "@bazel_tools//tools/jdk:remotejdk_16",
+    source_version = "16",
+    target_version = "16",
+)
+
 # Deprecated, do not use.
 # It will be removed after migration to Java toolchain resolution.
 default_java_toolchain(
@@ -438,6 +447,10 @@
     "remotejdk15_macos_aarch64",
     "remotejdk15_win",
     "remotejdk15_linux",
+    "remotejdk16_macos",
+    "remotejdk16_macos_aarch64",
+    "remotejdk16_win",
+    "remotejdk16_linux",
 ]
 
 [
@@ -486,6 +499,22 @@
 )
 
 java_runtime_version_alias(
+    name = "remotejdk_16",
+    runtime_version = "remotejdk_16",
+    selected_java_runtime = select(
+        {
+            "//src/conditions:darwin_x86_64": ":remotejdk16_macos",
+            "//src/conditions:darwin_arm64": ":remotejdk16_macos_aarch64",
+            "//src/conditions:windows": ":remotejdk16_win",
+            "//src/conditions:linux_x86_64": ":remotejdk16_linux",
+        },
+        no_match_error = "Could not find a JDK for host execution environment, please explicitly" +
+                         " provide one using `--host_javabase.`",
+    ),
+    visibility = ["//visibility:public"],
+)
+
+java_runtime_version_alias(
     name = "jdk_8",
     runtime_version = "8",
     selected_java_runtime = ":legacy_current_java_runtime",
diff --git a/tools/jdk/default_java_toolchain.bzl b/tools/jdk/default_java_toolchain.bzl
index 406baa8..d1f3a43 100644
--- a/tools/jdk/default_java_toolchain.bzl
+++ b/tools/jdk/default_java_toolchain.bzl
@@ -26,6 +26,7 @@
     "--add-exports=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED",
     "--add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED",
     "--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED",
+    "--add-exports=jdk.compiler/com.sun.tools.javac.resources=ALL-UNNAMED",
     "--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED",
     "--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED",
     "--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED",