diff --git a/test/toolchains/bootclasspath_tests.bzl b/test/toolchains/bootclasspath_tests.bzl
index 5eb436a..e7ad1ca 100644
--- a/test/toolchains/bootclasspath_tests.bzl
+++ b/test/toolchains/bootclasspath_tests.bzl
@@ -13,6 +13,9 @@
 
 def _test_utf_8_environment_impl(env, target):
     for action in target.actions:
+        if action.mnemonic == "Ijar":
+            # ijar isn't sensitive to locales
+            continue
         env_subject = env.expect.where(action = action).that_dict(action.env)
         env_subject.keys().contains("LC_CTYPE")
         env_subject.get("LC_CTYPE", factory = subjects.str).contains("UTF-8")
diff --git a/toolchains/bootclasspath.bzl b/toolchains/bootclasspath.bzl
index d89aa17..5b4187c 100644
--- a/toolchains/bootclasspath.bzl
+++ b/toolchains/bootclasspath.bzl
@@ -101,6 +101,21 @@
     ],
 )
 
+def _run_ijar(*, actions, label, ijar, input, output):
+    args = actions.args()
+    args.add(input)
+    args.add(output)
+    args.add("--target_label", label)
+    actions.run(
+        inputs = [input],
+        outputs = [output],
+        executable = ijar,
+        arguments = [args],
+        progress_message = "Extracting interfaces from %{input}",
+        execution_requirements = _SUPPORTS_PATH_MAPPING,
+        mnemonic = "Ijar",
+    )
+
 _JAVA_BOOTSTRAP_RUNTIME_TOOLCHAIN_TYPE = Label("@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type")
 
 # Opt the Java bootstrap actions into path mapping:
@@ -138,7 +153,7 @@
         use_default_shell_env = True,
     )
 
-    bootclasspath = ctx.outputs.output_jar
+    unstripped_bootclasspath = ctx.actions.declare_file("%s_unstripped.jar" % ctx.label.name)
 
     args = ctx.actions.args()
     args.add("-XX:+IgnoreUnrecognizedVMOptions")
@@ -148,7 +163,7 @@
     args.add("--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED")
     args.add_all("-cp", [class_dir], expand_directories = False)
     args.add("DumpPlatformClassPath")
-    args.add(bootclasspath)
+    args.add(unstripped_bootclasspath)
 
     if ctx.attr.language_version_bootstrap_runtime:
         # The attribute is subject to a split transition.
@@ -201,12 +216,22 @@
         executable = str(exec_javabase.java_executable_exec_path),
         mnemonic = "JavaToolchainCompileBootClasspath",
         inputs = inputs,
-        outputs = [bootclasspath],
+        outputs = [unstripped_bootclasspath],
         arguments = [args],
         env = env,
         execution_requirements = _SUPPORTS_PATH_MAPPING,
         use_default_shell_env = True,
     )
+
+    bootclasspath = ctx.outputs.output_jar
+    _run_ijar(
+        actions = ctx.actions,
+        label = ctx.label,
+        ijar = ctx.executable._ijar,
+        input = unstripped_bootclasspath,
+        output = bootclasspath,
+    )
+
     return [
         DefaultInfo(files = depset([bootclasspath])),
         java_common.BootClassPathInfo(
@@ -234,6 +259,11 @@
         "_allowlist_function_transition": attr.label(
             default = "@bazel_tools//tools/allowlists/function_transition_allowlist",
         ),
+        "_ijar": attr.label(
+            default = "//toolchains:ijar",
+            cfg = "exec",
+            executable = True,
+        ),
         "_utf8_environment": attr.label(
             default = ":utf8_environment",
             cfg = "exec",
