0

Environment

%bazel version
Build label: 4.2.0
Build target: bazel-out/k8-opt/bin/src/main/java/com/google/devtools/build/lib/bazel/BazelServer_deploy.jar
Build time: Mon Aug 23 13:31:45 2021 (1629725505)
Build timestamp: 1629725505
Build timestamp as int: 1629725505

%env | grep JAVA_HOME
JAVA_HOME=/usr/lib/jvm/default

%ls -l $JAVA_HOME
lrwxrwxrwx 1 root root 15 Jun 18 22:33 /usr/lib/jvm/default -> java-16-openjdk

Protocol

%git clone https://github.com/bazelbuild/examples
%cd examples/java_tutorial
%bazel build //:ProjectRunner
                                                 
INFO: Analyzed target //:ProjectRunner (23 packages loaded, 511 targets configured).
INFO: Found 1 target...
[6 / 7] [Prepa] Building ProjectRunner.jar (2 source files)
FATAL: bazel crashed due to an internal error. Printing stack trace:
java.lang.ExceptionInInitializerError
    at com.google.devtools.build.lib.actions.ParameterFile.writeContent(ParameterFile.java:118)
    at com.google.devtools.build.lib.actions.ParameterFile.writeParameterFile(ParameterFile.java:111)
    at com.google.devtools.build.lib.actions.CommandLines$ParamFileActionInput.writeTo(CommandLines.java:275)
    at com.google.devtools.build.lib.sandbox.SandboxHelpers.writeVirtualInputTo(SandboxHelpers.java:238)
    at com.google.devtools.build.lib.sandbox.SandboxHelpers.atomicallyWriteVirtualInput(SandboxHelpers.java:94)
    at com.google.devtools.build.lib.sandbox.SandboxHelpers$SandboxInputs.materializeVirtualInput(SandboxHelpers.java:202)
    at com.google.devtools.build.lib.sandbox.SandboxHelpers$SandboxInputs.access$100(SandboxHelpers.java:154)
    at com.google.devtools.build.lib.sandbox.SandboxHelpers.processInputFiles(SandboxHelpers.java:308)
    at com.google.devtools.build.lib.worker.WorkerSpawnRunner.exec(WorkerSpawnRunner.java:182)
    at com.google.devtools.build.lib.exec.SpawnRunner.execAsync(SpawnRunner.java:238)
    at com.google.devtools.build.lib.exec.AbstractSpawnStrategy.exec(AbstractSpawnStrategy.java:144)
    at com.google.devtools.build.lib.exec.AbstractSpawnStrategy.exec(AbstractSpawnStrategy.java:106)
    at com.google.devtools.build.lib.actions.SpawnStrategy.beginExecution(SpawnStrategy.java:47)
    at com.google.devtools.build.lib.exec.SpawnStrategyResolver.beginExecution(SpawnStrategyResolver.java:65)
    at com.google.devtools.build.lib.rules.java.JavaCompileAction.beginExecution(JavaCompileAction.java:357)
    at com.google.devtools.build.lib.actions.Action.execute(Action.java:127)
    at com.google.devtools.build.lib.skyframe.SkyframeActionExecutor$5.execute(SkyframeActionExecutor.java:855)
    at com.google.devtools.build.lib.skyframe.SkyframeActionExecutor$ActionRunner.continueAction(SkyframeActionExecutor.java:1016)
    at com.google.devtools.build.lib.skyframe.SkyframeActionExecutor$ActionRunner.run(SkyframeActionExecutor.java:975)
    at com.google.devtools.build.lib.skyframe.ActionExecutionState.runStateMachine(ActionExecutionState.java:129)
    at com.google.devtools.build.lib.skyframe.ActionExecutionState.getResultOrDependOnFuture(ActionExecutionState.java:81)
    at com.google.devtools.build.lib.skyframe.SkyframeActionExecutor.executeAction(SkyframeActionExecutor.java:472)
    at com.google.devtools.build.lib.skyframe.ActionExecutionFunction.checkCacheAndExecuteIfNeeded(ActionExecutionFunction.java:834)
    at com.google.devtools.build.lib.skyframe.ActionExecutionFunction.compute(ActionExecutionFunction.java:307)
    at com.google.devtools.build.skyframe.AbstractParallelEvaluator$Evaluate.run(AbstractParallelEvaluator.java:477)
    at com.google.devtools.build.lib.concurrent.AbstractQueueVisitor$WrappedRunnable.run(AbstractQueueVisitor.java:398)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
    at java.base/java.lang.Thread.run(Thread.java:831)
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make java.lang.String(byte[],byte) accessible: module java.base does not "opens java.lang" to unnamed module @13e39c73
    at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:357)
    at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
    at java.base/java.lang.reflect.Constructor.checkCanSetAccessible(Constructor.java:188)
    at java.base/java.lang.reflect.Constructor.setAccessible(Constructor.java:181)
    at com.google.devtools.build.lib.unsafe.StringUnsafe.<init>(StringUnsafe.java:75)
    at com.google.devtools.build.lib.unsafe.StringUnsafe.initInstance(StringUnsafe.java:56)
    at com.google.devtools.build.lib.unsafe.StringUnsafe.<clinit>(StringUnsafe.java:37)
    ... 29 more

Expected

The build pass

Observed

The trace above...

2 Answers 2

2

After digging a little, Archlinux package jdk-openjdk which is Java 17 while bazel is built against JDK-11 so by "default" it will fail.

another way to fix it is to change the "JAVA_HOME" use:

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk

bazel clean
bazel build //:ProjectRunner

note: You can also try to switch your env to JDK 11 using the helper script archlinux-java ref: https://wiki.archlinux.org/title/java#Switching_between_JVM

Sign up to request clarification or add additional context in comments.

Comments

1

You can likely work around this by passing the --host_jvm_args=--add-opens=java.base/java.nio=ALL-UNNAMED and --host_jvm_args=--add-opens=java.base/java.lang=ALL-UNNAMED startup flags to Bazel.

It's probably worth filing a bug for the Arch package, since it's a distribution bug to not pass those flags.

1 Comment

after digging archlinux jdk-openjdk is Java 17 currently while bazel is built against JDK-11 so by "default" it will fail

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.