)]}'
{
  "commit": "421776c58cd4ca3f75e852c63e570bf6a442c891",
  "tree": "617ce77dfe04bed5082f90effda7a397074de4e6",
  "parents": [
    "22bc9a886c1dcc5a44ef7d4e1ffe1afb1c816f3f"
  ],
  "author": {
    "name": "James Judd",
    "email": "james@lab-y.com",
    "time": "Mon Mar 09 07:41:17 2026 -0700"
  },
  "committer": {
    "name": "rules_java Copybara",
    "email": "noreply@google.com",
    "time": "Mon Mar 09 07:41:44 2026 -0700"
  },
  "message": "Attempt to fix missing class error by not using tree artifacts for bootclasspath (#340)\n\nA few times a year across many thousands of builds we encounter a rare error about the `DumpPlatformClassPath` class being missing. Our Bazel setup uses dynamic execution, builds without the bytes, remote execution + remote caching, and path mapping.\n\nThe error we encounter is as follows:\n```\nError: Could not find or load main class DumpPlatformClassPath\nCaused by: java.lang.ClassNotFoundException: DumpPlatformClassPath\n```\n\nI\u0027m guessing that this is happening due to some kind of Bazel bug that happens with our Bazel setup and tree artifacts, i.e., declare_directory.\n\nBest I can tell this is happening because the `DumpPlatformClassPath.class` file is somehow not materializing correctly. I\u0027m not 100% confident about that, but it\u0027s my leading hypothesis at this point in time.\n\nThis commit changes the actions in `bootclasspath.bzl` to not rely on tree artifacts. Instead, they rely JDK 11+\u0027s ability to launch single-file programs (introduced in JEP 330). This avoids the `javac` action and `declare_directory` previously required to compile `DumpPlatformClassPath`.\n\nProblem is this makes rules_java not compatible with JDK\u0027s older than 11.\n\nI\u0027m very open to alternative solutions to this, but I haven\u0027t yet come up with a robust, cross platform solution that avoids tree artifacts while also maintaining compatibility with JDKs older than 11.\n\nI wanted to open this PR to get some discussion going.\n\nCloses #340\n\nCOPYBARA_INTEGRATE_REVIEW\u003dhttps://github.com/bazelbuild/rules_java/pull/340 from lucidsoftware:bootclasspath-avoid-tree-artifact 34809e22c0022d4bb72088c0b1cfc864ea0cfb31\nPiperOrigin-RevId: 880851895\nChange-Id: I04c7142981a22b9f4995f25e2789ac6aa2aaf097\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7e69dc002f015e88dacfcbbcf53fedecf050094b",
      "old_mode": 33261,
      "old_path": "test/check_remote_java_tools_configs.sh",
      "new_id": "957aa7884aaac7884aae6f85c1749dc22b553416",
      "new_mode": 33261,
      "new_path": "test/check_remote_java_tools_configs.sh"
    },
    {
      "type": "modify",
      "old_id": "e7ad1cacf65b59435b13b7edcb0227d18271cad6",
      "old_mode": 33188,
      "old_path": "test/toolchains/bootclasspath_tests.bzl",
      "new_id": "15ccd4ff5b2bc2b6d75931ce7844cfb4988877ff",
      "new_mode": 33188,
      "new_path": "test/toolchains/bootclasspath_tests.bzl"
    },
    {
      "type": "modify",
      "old_id": "93da5de830f3178af38d1e93c6cf9496b847b30c",
      "old_mode": 33188,
      "old_path": "toolchains/bootclasspath.bzl",
      "new_id": "256c032fe25447cd8622fecab4f5790d2573c5b8",
      "new_mode": 33188,
      "new_path": "toolchains/bootclasspath.bzl"
    }
  ]
}
