diff --git a/build-tools/Java.Interop.BootstrapTasks/Java.Interop.BootstrapTasks.csproj b/build-tools/Java.Interop.BootstrapTasks/Java.Interop.BootstrapTasks.csproj
index f8cd822d4..9e01bae3a 100644
--- a/build-tools/Java.Interop.BootstrapTasks/Java.Interop.BootstrapTasks.csproj
+++ b/build-tools/Java.Interop.BootstrapTasks/Java.Interop.BootstrapTasks.csproj
@@ -3,6 +3,7 @@
netstandard2.0
false
+ 11.0
diff --git a/build-tools/Java.Interop.BootstrapTasks/Java.Interop.BootstrapTasks/JdkInfo.cs b/build-tools/Java.Interop.BootstrapTasks/Java.Interop.BootstrapTasks/JdkInfo.cs
index 2abf3a6a4..994084afb 100644
--- a/build-tools/Java.Interop.BootstrapTasks/Java.Interop.BootstrapTasks/JdkInfo.cs
+++ b/build-tools/Java.Interop.BootstrapTasks/Java.Interop.BootstrapTasks/JdkInfo.cs
@@ -5,6 +5,7 @@
using System.Diagnostics;
using System.IO;
using System.Linq;
+using System.Runtime.InteropServices;
using System.Text;
using System.Text.RegularExpressions;
using System.Xml.Linq;
@@ -46,6 +47,7 @@ public override bool Execute ()
.Where (j => maxVersion != null ? j.Version <= maxVersion : true)
.Where (j => j.IncludePath.Any ());
var jdk = explicitJdks.Concat (defaultJdks)
+ .Where (j => JdkRunsOnHost (j))
.FirstOrDefault ();
if (jdk == null) {
@@ -71,6 +73,19 @@ public override bool Execute ()
return !Log.HasLoggedErrors;
}
+ static bool JdkRunsOnHost (XATInfo jdk)
+ {
+ var cputype = RuntimeInformation.ProcessArchitecture;
+ if (jdk.ReleaseProperties.TryGetValue ("OS_ARCH", out var arch)) {
+ return (cputype, arch) switch {
+ (Architecture.Arm64, "aarch64") => true,
+ (Architecture.X64, "x86_64") => true,
+ _ => false,
+ };
+ }
+ return true;
+ }
+
XATInfo[] GetJdkRoots ()
{
XATInfo jdk = null;