[windows/arm64] Add missing JDK toolchain for java build

Extend configurations to add JDK 11 and 17 for windows/arm64 platforms.

This should fix the Java builds on windows/arm64

Closes #14700.

PiperOrigin-RevId: 427737536
diff --git a/WORKSPACE b/WORKSPACE
index bc5acf4..3fca315 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -477,6 +477,14 @@
 )
 
 dist_http_archive(
+    name = "remotejdk11_win_arm64_for_testing",
+    build_file = "@local_jdk//:BUILD.bazel",
+    patch_cmds = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE,
+    patch_cmds_win = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE_WIN,
+
+)
+
+dist_http_archive(
     name = "remotejdk17_linux_for_testing",
     build_file = "@local_jdk//:BUILD.bazel",
     patch_cmds = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE,
@@ -504,6 +512,14 @@
     patch_cmds_win = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE_WIN,
 )
 
+dist_http_archive(
+    name = "remotejdk17_win_arm64_for_testing",
+    build_file = "@local_jdk//:BUILD.bazel",
+    patch_cmds = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE,
+    patch_cmds_win = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE_WIN,
+
+)
+
 # Used in src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE.
 dist_http_archive(
     name = "remote_java_tools_for_testing",
@@ -597,6 +613,15 @@
 
 # This must be kept in sync with src/test/shell/bazel/testdata/jdk_http_archives.
 dist_http_archive(
+    name = "openjdk11_windows_arm64_archive",
+    build_file_content = """
+java_runtime(name = 'runtime', srcs =  glob(['**']), visibility = ['//visibility:public'])
+exports_files(["WORKSPACE"], visibility = ["//visibility:public"])
+""",
+)
+
+# This must be kept in sync with src/test/shell/bazel/testdata/jdk_http_archives.
+dist_http_archive(
     name = "openjdk17_linux_archive",
     build_file_content = """
 java_runtime(name = 'runtime', srcs =  glob(['**']), visibility = ['//visibility:public'])
@@ -631,6 +656,15 @@
 """,
 )
 
+# This must be kept in sync with src/test/shell/bazel/testdata/jdk_http_archives.
+dist_http_archive(
+    name = "openjdk17_windows_arm64_archive",
+    build_file_content = """
+java_runtime(name = 'runtime', srcs =  glob(['**']), visibility = ['//visibility:public'])
+exports_files(["WORKSPACE"], visibility = ["//visibility:public"])
+""",
+)
+
 load("@io_bazel_skydoc//:setup.bzl", "stardoc_repositories")
 
 stardoc_repositories()
diff --git a/distdir_deps.bzl b/distdir_deps.bzl
index 2ce1eb2..da8dab7 100644
--- a/distdir_deps.bzl
+++ b/distdir_deps.bzl
@@ -449,6 +449,8 @@
     },
     "remotejdk17_win_arm64": {
         "aliases": [
+            "remotejdk17_win_arm64_for_testing",
+            "openjdk17_windows_arm64_archive",
             "openjdk_win_arm64_vanilla",
         ],
         "archive": "zulu17.30.15-ca-jdk17.0.1-win_aarch64.zip",
@@ -460,6 +462,19 @@
         ],
         "used_in": ["test_WORKSPACE_files"],
     },
+    "remotejdk11_win_arm64": {
+        "aliases": [
+            "remotejdk11_win_arm64_for_testing",
+            "openjdk11_windows_arm64_archive",
+        ],
+        "archive": "microsoft-jdk-11.0.13.8.1-windows-aarch64.zip",
+        "sha256": "b8a28e6e767d90acf793ea6f5bed0bb595ba0ba5ebdf8b99f395266161e53ec2",
+        "strip_prefix": "jdk-11.0.13+8",
+        "urls": [
+            "https://mirror.bazel.build/aka.ms/download-jdk/microsoft-jdk-11.0.13.8.1-windows-aarch64.zip",
+        ],
+        "used_in": ["test_WORKSPACE_files"],
+    },
     "remotejdk17_linux": {
         "aliases": [
             "remotejdk17_linux_for_testing",
diff --git a/src/BUILD b/src/BUILD
index 45419a6..1a007b8 100644
--- a/src/BUILD
+++ b/src/BUILD
@@ -653,10 +653,12 @@
         "@openjdk11_darwin_archive//:WORKSPACE",
         "@openjdk11_linux_archive//:WORKSPACE",
         "@openjdk11_windows_archive//:WORKSPACE",
+        "@openjdk11_windows_arm64_archive//:WORKSPACE",
         "@openjdk17_darwin_aarch64_archive//:WORKSPACE",
         "@openjdk17_darwin_archive//:WORKSPACE",
         "@openjdk17_linux_archive//:WORKSPACE",
         "@openjdk17_windows_archive//:WORKSPACE",
+        "@openjdk17_windows_arm64_archive//:WORKSPACE",
         "@openjdk_linux_aarch64_minimal//file",
         "@openjdk_linux_minimal//file",
         "@openjdk_macos_aarch64_minimal//file",
@@ -677,10 +679,12 @@
         "@remotejdk11_linux_s390x_for_testing//:WORKSPACE",
         "@remotejdk11_macos_aarch64_for_testing//:WORKSPACE",
         "@remotejdk11_macos_for_testing//:WORKSPACE",
+        "@remotejdk11_win_arm64_for_testing//:WORKSPACE",
         "@remotejdk11_win_for_testing//:WORKSPACE",
         "@remotejdk17_linux_for_testing//:WORKSPACE",
         "@remotejdk17_macos_aarch64_for_testing//:WORKSPACE",
         "@remotejdk17_macos_for_testing//:WORKSPACE",
+        "@remotejdk17_win_arm64_for_testing//:WORKSPACE",
         "@remotejdk17_win_for_testing//:WORKSPACE",
         "@rules_cc//:WORKSPACE",
         "@rules_java//:WORKSPACE",
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BUILD b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BUILD
index cee45d7..80401dd 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BUILD
@@ -101,10 +101,12 @@
         "remotejdk11_macos",
         "remotejdk11_macos_aarch64",
         "remotejdk11_win",
+        "remotejdk11_win_arm64",
         "remotejdk17_linux",
         "remotejdk17_macos",
         "remotejdk17_macos_aarch64",
         "remotejdk17_win",
+        "remotejdk17_win_arm64",
     ],
     template = "jdk.WORKSPACE.tmpl",
     visibility = ["//:__pkg__"],
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE.tmpl b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE.tmpl
index c7dc6c3..e84d87c 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE.tmpl
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE.tmpl
@@ -97,6 +97,17 @@
 # This must be kept in sync with the top-level WORKSPACE file.
 maybe(
     remote_java_repository,
+    {remotejdk11_win_arm64}
+    target_compatible_with = [
+        "@platforms//os:windows",
+        "@platforms//cpu:arm64",
+    ],
+    version = "11",
+)
+
+# This must be kept in sync with the top-level WORKSPACE file.
+maybe(
+    remote_java_repository,
     {remotejdk17_linux}
     target_compatible_with = [
         "@platforms//os:linux",
@@ -139,6 +150,16 @@
 )
 
 maybe(
+    remote_java_repository,
+    {remotejdk17_win_arm64}
+    target_compatible_with = [
+        "@platforms//os:windows",
+        "@platforms//cpu:arm64",
+    ],
+    version = "17",
+)
+
+maybe(
     http_archive,
 {remote_java_tools}
 )
diff --git a/src/test/py/bazel/test_base.py b/src/test/py/bazel/test_base.py
index 9c4cf3c..1df8a3a 100644
--- a/src/test/py/bazel/test_base.py
+++ b/src/test/py/bazel/test_base.py
@@ -64,10 +64,12 @@
       'remotejdk11_macos_for_testing',
       'remotejdk11_macos_aarch64_for_testing',
       'remotejdk11_win_for_testing',
+      'remotejdk11_win_arm64_for_testing',
       'remotejdk17_linux_for_testing',
       'remotejdk17_macos_for_testing',
       'remotejdk17_macos_aarch64_for_testing',
       'remotejdk17_win_for_testing',
+      'remotejdk17_win_arm64_for_testing',
       'remote_java_tools_for_testing',
       'remote_java_tools_darwin_for_testing',
       'remote_java_tools_linux_for_testing',
diff --git a/src/test/shell/bazel/testdata/BUILD b/src/test/shell/bazel/testdata/BUILD
index 033f673..be725e3 100644
--- a/src/test/shell/bazel/testdata/BUILD
+++ b/src/test/shell/bazel/testdata/BUILD
@@ -54,10 +54,12 @@
         "openjdk11_darwin_archive",
         "openjdk11_darwin_aarch64_archive",
         "openjdk11_windows_archive",
+        "openjdk11_windows_arm64_archive",
         "openjdk17_linux_archive",
         "openjdk17_darwin_archive",
         "openjdk17_darwin_aarch64_archive",
         "openjdk17_windows_archive",
+        "openjdk17_windows_arm64_archive",
     ],
     template = "jdk_http_archives.tmpl",
     visibility = ["//:__pkg__"],
diff --git a/src/test/shell/bazel/testdata/jdk_http_archives.tmpl b/src/test/shell/bazel/testdata/jdk_http_archives.tmpl
index eb3bca6..ff5e713 100644
--- a/src/test/shell/bazel/testdata/jdk_http_archives.tmpl
+++ b/src/test/shell/bazel/testdata/jdk_http_archives.tmpl
@@ -40,6 +40,12 @@
     build_file_content = "java_runtime(name = 'runtime', srcs =  glob(['**']), visibility = ['//visibility:public'])",
 )
 
+# This must be kept in sync with the top-level WORKSPACE file.
+http_archive(
+    {openjdk11_windows_arm64_archive}
+    build_file_content = "java_runtime(name = 'runtime', srcs =  glob(['**']), visibility = ['//visibility:public'])",
+)
+
 #################################### JDK 17 ####################################
 # This must be kept in sync with the top-level WORKSPACE file.
 http_archive(
@@ -76,3 +82,12 @@
 exports_files(["WORKSPACE"], visibility = ["//visibility:public"])
 """,
 )
+
+# This must be kept in sync with src/test/shell/bazel/testdata/jdk_http_archives.
+http_archive(
+    {openjdk17_windows_arm64_archive}
+    build_file_content = """
+java_runtime(name = 'runtime', srcs =  glob(['**']), visibility = ['//visibility:public'])
+exports_files(["WORKSPACE"], visibility = ["//visibility:public"])
+""",
+)
diff --git a/src/test/shell/testenv.sh.tmpl b/src/test/shell/testenv.sh.tmpl
index c0216a7..9c665c0 100755
--- a/src/test/shell/testenv.sh.tmpl
+++ b/src/test/shell/testenv.sh.tmpl
@@ -289,10 +289,12 @@
         "openjdk11_darwin_aarch64_archive"
         "openjdk11_linux_archive"
         "openjdk11_windows_archive"
+        "openjdk11_windows_arm64_archive"
         "openjdk17_darwin_archive"
         "openjdk17_darwin_aarch64_archive"
         "openjdk17_linux_archive"
         "openjdk17_windows_archive"
+        "openjdk17_windows_arm64_archive"
         "openjdk_linux_aarch64_minimal"
         "openjdk_linux_minimal"
         "openjdk_macos_x86_64_minimal"
@@ -314,10 +316,12 @@
         "remotejdk11_macos_for_testing"
         "remotejdk11_macos_aarch64_for_testing"
         "remotejdk11_win_for_testing"
+        "remotejdk11_win_arm64_for_testing"
         "remotejdk17_linux_for_testing"
         "remotejdk17_macos_for_testing"
         "remotejdk17_macos_aarch64_for_testing"
         "remotejdk17_win_for_testing"
+        "remotejdk17_win_arm64_for_testing"
         "rules_cc"
         "rules_java"
         "rules_proto"
diff --git a/tools/jdk/BUILD.tools b/tools/jdk/BUILD.tools
index 600b0b2..d102ef0 100644
--- a/tools/jdk/BUILD.tools
+++ b/tools/jdk/BUILD.tools
@@ -443,6 +443,7 @@
     "remotejdk11_macos",
     "remotejdk11_macos_aarch64",
     "remotejdk11_win",
+    "remotejdk11_win_arm64",
     "remotejdk11_linux_aarch64",
     "remotejdk11_linux",
     "remotejdk11_linux_ppc64le",
@@ -450,6 +451,7 @@
     "remotejdk17_macos",
     "remotejdk17_macos_aarch64",
     "remotejdk17_win",
+    "remotejdk17_win_arm64",
     "remotejdk17_linux",
 ]
 
diff --git a/tools/jdk/jdk.BUILD b/tools/jdk/jdk.BUILD
index 057bfbf..6a95e85 100644
--- a/tools/jdk/jdk.BUILD
+++ b/tools/jdk/jdk.BUILD
@@ -210,6 +210,6 @@
 
 config_setting(
     name = "windows",
-    values = {"cpu": "x64_windows"},
+    constraint_values = ["@platforms//os:windows"],
     visibility = ["//visibility:private"],
 )