Allow Bazel's own build to use Java 11 language features Fixes https://github.com/bazelbuild/bazel/issues/14592 PiperOrigin-RevId: 422562457
diff --git a/.bazelrc b/.bazelrc index cb59636..0225533 100644 --- a/.bazelrc +++ b/.bazelrc
@@ -35,5 +35,13 @@ build:bzlmod --crosstool_top=@rules_cc.0.0.1.cc_configure.local_config_cc//:toolchain build:bzlmod --xcode_version_config=@rules_cc.0.0.1.cc_configure.local_config_xcode//:host_xcodes +# Enable Java 11 language features (https://github.com/bazelbuild/bazel/issues/14592) +# Toolchain resolution configuration for Bazel >= 5 +build --java_language_version=11 +build --tool_java_language_version=11 +# Legacy configuration for Bazel <= 4 +build --java_toolchain=@bazel_tools//tools/jdk:toolchain_java11 +build --host_java_toolchain=@bazel_tools//tools/jdk:toolchain_java11 + # User-specific .bazelrc try-import user.bazelrc
diff --git a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/BUILD b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/BUILD index 2d80d14..d2fbb4b 100644 --- a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/BUILD +++ b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/BUILD
@@ -52,6 +52,14 @@ ["javac/*.java"], exclude = JAVAC_OPTIONS_SRCS + JAVAC_TEST_SRCS, ), + javacopts = [ + "--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED", + "--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED", + "--add-exports=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED", + "--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED", + "--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED", + "--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED", + ], deps = [ ":invalid_command_line_exception", ":javac_options", @@ -60,7 +68,6 @@ "//third_party:auto_value", "//third_party:guava", "//third_party:jsr305", - "//third_party/java/jdk/langtools:javac", "//third_party/protobuf:protobuf_java", ], ) @@ -212,6 +219,11 @@ java_test( name = "BootClassPathCachingFileManagerTest", srcs = ["javac/BootClassPathCachingFileManagerTest.java"], + javacopts = [ + "--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED", + "--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED", + "--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED", + ], deps = [ ":javac", "//third_party:guava",
diff --git a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/BUILD b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/BUILD index ba50689..bfa5768 100644 --- a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/BUILD +++ b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/BUILD
@@ -9,17 +9,29 @@ java_library( name = "plugins", srcs = ["BlazeJavaCompilerPlugin.java"], + javacopts = [ + "--add-exports=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED", + "--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED", + "--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED", + ], deps = [ "//src/java_tools/buildjar/java/com/google/devtools/build/buildjar:invalid_command_line_exception", "//src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/statistics", "//third_party:guava", - "//third_party/java/jdk/langtools:javac", ], ) java_library( name = "dependency", srcs = glob(["dependency/*.java"]), + javacopts = [ + "--add-exports=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED", + "--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED", + "--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED", + "--add-exports=jdk.compiler/com.sun.tools.javac.resources=ALL-UNNAMED", + "--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED", + "--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED", + ], deps = [ ":plugins", "//src/java_tools/buildjar/java/com/google/devtools/build/buildjar:JarOwner", @@ -28,31 +40,39 @@ "//third_party:auto_value", "//third_party:guava", "//third_party:tomcat_annotations_api", - "//third_party/java/jdk/langtools:javac", ], ) java_library( name = "errorprone", srcs = glob(["errorprone/*.java"]), + javacopts = [ + "--add-exports=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED", + "--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED", + "--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED", + "--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED", + ], deps = [ ":plugins", "//src/java_tools/buildjar/java/com/google/devtools/build/buildjar:invalid_command_line_exception", "//src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/statistics", "//third_party:error_prone", "//third_party:guava", - "//third_party/java/jdk/langtools:javac", ], ) java_library( name = "processing", srcs = glob(["processing/*.java"]), + javacopts = [ + "--add-exports=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED", + "--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED", + "--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED", + ], deps = [ ":plugins", "//src/main/protobuf:java_compilation_java_proto", "//third_party:guava", - "//third_party/java/jdk/langtools:javac", ], )
diff --git a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/statistics/BUILD b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/statistics/BUILD index 5c06bc2..6e3d7d5 100644 --- a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/statistics/BUILD +++ b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/statistics/BUILD
@@ -5,11 +5,13 @@ java_library( name = "statistics", srcs = ["BlazeJavacStatistics.java"], + javacopts = [ + "--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED", + ], deps = [ "//third_party:auto_value", "//third_party:caffeine", "//third_party:guava", - "//third_party/java/jdk/langtools:javac", ], )
diff --git a/src/test/java/com/google/devtools/build/android/desugar/BUILD b/src/test/java/com/google/devtools/build/android/desugar/BUILD index 28b10a3..b079a15 100644 --- a/src/test/java/com/google/devtools/build/android/desugar/BUILD +++ b/src/test/java/com/google/devtools/build/android/desugar/BUILD
@@ -320,6 +320,7 @@ srcs = [ "DesugarCoreLibraryFunctionalTest.java", ], + javacopts = ["-source 8 -target 8"], jvm_flags = [ # TODO (b/72181101): -Xbootclasspath/p is removed in JDK 9. "-XX:+IgnoreUnrecognizedVMOptions", @@ -693,7 +694,10 @@ java_library( name = "testdata", srcs = glob(["testdata/*.java"]), - javacopts = ["-Xep:SelfAssignment:OFF"], + javacopts = [ + "-Xep:SelfAssignment:OFF", + "-source 8 -target 8", + ], resources = ["testdata/testresource.txt"], deps = [ ":separate", @@ -707,7 +711,10 @@ "testdata/*.java", "testdata/java8/**/*.java", ]), - javacopts = ["-Xep:SelfAssignment:OFF"], + javacopts = [ + "-Xep:SelfAssignment:OFF", + "-source 8 -target 8", + ], resources = ["testdata/testresource.txt"], deps = [ ":separate", @@ -721,6 +728,7 @@ srcs = glob([ "testdata/core_library/**/*.java", ]), + javacopts = ["-source 8 -target 8"], resources = ["testdata/testresource.txt"], deps = [ "//third_party:error_prone", @@ -741,7 +749,10 @@ java_library( name = "testdata_like_in_android_studio", srcs = glob(["testdata/*.java"]), - javacopts = ["-Xep:SelfAssignment:OFF"], + javacopts = [ + "-Xep:SelfAssignment:OFF", + "-source 8 -target 8", + ], resources = ["testdata/testresource.txt"], deps = [ ":libseparate.jar", # puts full Jar instead of header Jar on the classpath @@ -755,7 +766,10 @@ "testdata/*.java", "testdata/java8/**/*.java", ]), - javacopts = ["-Xep:SelfAssignment:OFF"], + javacopts = [ + "-Xep:SelfAssignment:OFF", + "-source 8 -target 8", + ], resources = ["testdata/testresource.txt"], deps = [ ":libseparate.jar", # puts full Jar instead of header Jar on the classpath
diff --git a/src/tools/android/java/com/google/devtools/build/android/BUILD b/src/tools/android/java/com/google/devtools/build/android/BUILD index 10801bb..4774619 100644 --- a/src/tools/android/java/com/google/devtools/build/android/BUILD +++ b/src/tools/android/java/com/google/devtools/build/android/BUILD
@@ -64,6 +64,9 @@ ], exclude = ["DependencyInfo.java"], ), + javacopts = [ + "--add-exports=java.xml/com.sun.org.apache.xerces.internal.dom=ALL-UNNAMED", + ], exports = [ # Separated out to avoid a dependency cycle with resources/, but it logically belongs here. ":dependency_info",
diff --git a/third_party/ijar/test/BUILD b/third_party/ijar/test/BUILD index 5b10341..bed1af6 100644 --- a/third_party/ijar/test/BUILD +++ b/third_party/ijar/test/BUILD
@@ -209,6 +209,7 @@ java_library( name = "local_and_anonymous_lib", srcs = ["LocalAndAnonymous.java"], + javacopts = ["-source 8 -target 8"], ) genrule(