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(