Во-первых, найдите JDK, который вы хотите использовать в Bazel, я буду использовать Azul Zulu JDK 21 EA.

У выбранного вами поставщика JDK вам нужно будет найти URL-адрес загрузки и SHA256. В моем случае я нахожу URL-адрес загрузки, щелкнув правой кнопкой мыши .zip и выбрав Copy link address, а для SHA256 я щелкну Checksum (SHA256) и скопирую SHA256.

Теперь в вашем WORKFILE добавьте следующее

load("@bazel_tools//tools/jdk:remote_java_repository.bzl", "remote_java_repository") 

remote_java_repository( 
  name = "name_for_the_java_repository", 
  prefix = "zulujdk", 
  sha256 = "bbc8c786c2ed41bf8471f2829854b5f78a24d20195c4a69a6c529c1e81cd8be7", # The SHA256 you copied goes here 
  strip_prefix = "zulu21.0.21-ea-jdk21.0.0-ea.6-win_x64", # The name of the ZIP/TAR file
  target_compatible_with = ["@platforms//os:windows"], # Or @platforms//os:mac, @platforms//os:linux depending on which JDK you are downloading 
  urls = ["https://cdn.azul.com/zulu/bin/zulu21.0.21-ea-jdk21.0.0-ea.6-win_x64.zip"], # The download url you copied goes here 
  version = "21", # Replace with the Java version you are downloading 
)

И в вашем файле BUILD добавьте следующее

load(
  "@bazel_tools//tools/jdk:default_java_toolchain.bzl", 
  "BASE_JDK9_JVM_OPTS", 
  "DEFAULT_JAVACOPTS", 
  "DEFAULT_TOOLCHAIN_CONFIGURATION", 
  "default_java_toolchain", 
) 

default_java_toolchain( 
  name = "name_for_the_java_toolchain", 
  configuration = DEFAULT_TOOLCHAIN_CONFIGURATION, 
  java_runtime = "@name_for_the_java_repository//:jdk", 
  javacopts = DEFAULT_JAVACOPTS + ["--enable-preview"], 
  jvm_opts = BASE_JDK9_JVM_OPTS + ["--enable-preview"], 
  source_version = "21", 
  target_version = "21",
) 

# More rules 
# java_binary(

Наконец, в .bazelrc добавьте следующее

build --extra_toolchains=//:name_for_the_java_toolchain_definition 
build --java_language_version=21 
build --java_runtime_version=21

Вот и все, теперь вы можете создавать и запускать свой Java-проект в Bazel с помощью нового блестящего JDK.

Первоначально опубликовано на http://github.com.