Clean up obsolete logic related to bundled annotation processors
PiperOrigin-RevId: 605684312
Change-Id: I3fad36c5079e192ef5779949a61de90ef9d5af7c
diff --git a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/BlazeJavacMain.java b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/BlazeJavacMain.java
index 8fb0683..6e76c74 100644
--- a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/BlazeJavacMain.java
+++ b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/BlazeJavacMain.java
@@ -418,10 +418,14 @@
}
/**
- * When Bazel invokes JavaBuilder, it puts javac.jar on the bootstrap class path and
- * JavaBuilder_deploy.jar on the user class path. We need Error Prone to be available on the
- * annotation processor path, but we want to mask out any other classes to minimize class version
- * skew.
+ * Ensure that classes that appear in the API between JavaBuilder and plugins are consistently
+ * loaded by the same classloader. 'Plugins' here means both annotation processors and Error Prone
+ * plugins. The annotation processor API is defined in the JDK and doesn't require any special
+ * handling, since the versions in the system classloader will always be loaded preferentially.
+ * For Error Prone plugins, we want to ensure that classes in the API are loaded from the same
+ * classloader as JavaBuilder, but that other classes referenced by plugins are loaded from the
+ * processor classpath to avoid plugins seeing stale versions of classes from the releases
+ * JavaBuilder jar.
*/
@Trusted
private static class ClassloaderMaskingFileManager extends JavacFileManager {
@@ -455,11 +459,8 @@
if (name.startsWith("com.google.errorprone.")
|| name.startsWith("com.google.common.collect.")
|| name.startsWith("com.google.common.base.")
- || name.startsWith("com.google.common.graph.")
|| name.startsWith("com.google.common.regex.")
|| name.startsWith("org.checkerframework.errorprone.dataflow.")
- || name.startsWith("com.sun.source.")
- || name.startsWith("com.sun.tools.")
|| name.startsWith("com.google.devtools.build.buildjar.javac.statistics.")) {
return Class.forName(name);
}