Skip to content

Gradle daemon may run on an older jdk than the project's #263

@ben-manes

Description

@ben-manes

In this case the Gradle daemon runs on jdk21, as defined by its toolchain in gradle-daemon-jvm.properties. While the Caffeine project normally uses jdk21 with --release 11, for its internal tooling that uses jdk24's Gatherers to replace its own batching with windowFixed. Gradle 8.13 does not yet support running on jdk24, but this all works itself out thanks to toolchain settings which auto bootstrap the jdks if absent.

Upgrading to v3.9 and re-enabling the task fails as below (./gradlew forbiddenApis -DforbiddenApis -q -). The Gatherers is not available in the daemon's jdk but is in the compiler's. It succeeds if using gradle nightly (8.14 pre-release) and a jdk24 daemon.

Caused by: de.thetaphi.forbiddenapis.ForbiddenApiException: Check for forbidden API calls failed while scanning class 'com.github.benmanes.caffeine.cache.simulator.Simulator' (Simulator.java): java.lang.ClassNotFoundException: java.util.stream.Gatherers (while looking up details about referenced class 'java.util.stream.Gatherers')
        at de.thetaphi.forbiddenapis.Checker.checkClass(Checker.java:458)
        at de.thetaphi.forbiddenapis.Checker.run(Checker.java:509)
        at de.thetaphi.forbiddenapis.gradle.CheckForbiddenApis.checkForbidden(CheckForbiddenApis.java:666)
        at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
        at java.base/java.lang.reflect.Method.invoke(Method.java:580)
        at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:125)
        ... 122 more
Caused by: java.lang.ClassNotFoundException: java.util.stream.Gatherers
        at de.thetaphi.forbiddenapis.Checker.getClassFromClassLoader(Checker.java:299)
        at de.thetaphi.forbiddenapis.Checker.lookupRelatedClass(Checker.java:311)
        at de.thetaphi.forbiddenapis.ClassScanner.checkClassUse(ClassScanner.java:109)
        at de.thetaphi.forbiddenapis.ClassScanner.checkClassUse(ClassScanner.java:123)
        at de.thetaphi.forbiddenapis.ClassScanner$3.checkMethodAccess(ClassScanner.java:399)
        at de.thetaphi.forbiddenapis.ClassScanner$3.visitMethodInsn(ClassScanner.java:569)
        at de.thetaphi.forbiddenapis.asm.ClassReader.readCode(ClassReader.java:2447)
        at de.thetaphi.forbiddenapis.asm.ClassReader.readMethod(ClassReader.java:1512)
        at de.thetaphi.forbiddenapis.asm.ClassReader.accept(ClassReader.java:745)
        at de.thetaphi.forbiddenapis.asm.ClassReader.accept(ClassReader.java:425)
        at de.thetaphi.forbiddenapis.Checker.checkClass(Checker.java:444)
        ... 127 more

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions