Skip to content

InitializeException: Could not initialize DynamicDriver with Java 26 #10921

@arouel

Description

@arouel

Tracer Version(s)

1.60.2~428d682133

Java Version(s)

26.0.0.35.1

JVM Vendor

Amazon Corretto

Bug Report

I get the following error when using the latest dd-trace-java with Java 26 when compiling code. The dd-trace-java agent uses dd-javac-plugin:0.2.4 which transitively depends on jvm-driver:9.9.10, where a fix needs to be applied.

The root cause is, that the Class.forName0 signature has changed in Java 26 compared to Class.forName0 in Java 25.

With the Pull Request toolfactory/jvm-driver#75, I proposed a solution.

Error

io.github.toolfactory.jvm.Driver$InitializeException: Could not initialize DynamicDriver
Dependency verification has been disabled.
  at io.github.toolfactory.jvm.DriverAbst.refresh(DriverAbst.java:257)
Dependency verification has been disabled.
  at io.github.toolfactory.jvm.DriverAbst.getDeclaredFields(DriverAbst.java:1057)
  at org.burningwave.core.jvm.BufferHandler.init(BufferHandler.java:98)
  at org.burningwave.core.jvm.BufferHandler.<init>(BufferHandler.java:88)
  at org.burningwave.core.jvm.BufferHandler.create(BufferHandler.java:164)
  at org.burningwave.core.assembler.StaticComponentContainer.<clinit>(StaticComponentContainer.java:374)
  at datadog.compiler.CompilerModuleOpener.setup(CompilerModuleOpener.java:24)
  at datadog.compiler.DatadogCompilerPlugin.<clinit>(DatadogCompilerPlugin.java:16)
  at java.base/jdk.internal.misc.Unsafe.ensureClassInitialized0(Native Method)
  at java.base/jdk.internal.misc.Unsafe.ensureClassInitialized(Unsafe.java:1195)
  at java.base/jdk.internal.reflect.MethodHandleAccessorFactory.ensureClassInitialized(MethodHandleAccessorFactory.java:341)
  at java.base/jdk.internal.reflect.MethodHandleAccessorFactory.newConstructorAccessor(MethodHandleAccessorFactory.java:104)
  at java.base/jdk.internal.reflect.ReflectionFactory.newConstructorAccessor(ReflectionFactory.java:138)
  at java.base/java.lang.reflect.Constructor.acquireConstructorAccessor(Constructor.java:546)
  at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:496)
  at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:483)
  at java.base/java.util.ServiceLoader$ProviderImpl.newInstance(ServiceLoader.java:707)
  at java.base/java.util.ServiceLoader$ProviderImpl.get(ServiceLoader.java:672)
  at java.base/java.util.ServiceLoader$2.next(ServiceLoader.java:1256)
  at jdk.compiler/com.sun.tools.javac.api.BasicJavacTask.initPlugins(BasicJavacTask.java:221)
  at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.prepareCompiler(JavacTaskImpl.java:204)
  at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.lambda$doCall$0(JavacTaskImpl.java:101)
  at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.invocationHelper(JavacTaskImpl.java:152)
  at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:100)
  at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:94)
  at org.gradle.internal.compiler.java.IncrementalCompileTask.call(IncrementalCompileTask.java:92)
  at org.gradle.api.internal.tasks.compile.AnnotationProcessingCompileTask.call(AnnotationProcessingCompileTask.java:94)
  at org.gradle.api.internal.tasks.compile.ResourceCleaningCompilationTask.call(ResourceCleaningCompilationTask.java:57)
  at org.gradle.api.internal.tasks.compile.JdkJavaCompiler.execute(JdkJavaCompiler.java:83)
  at org.gradle.api.internal.tasks.compile.JdkJavaCompiler.execute(JdkJavaCompiler.java:50)
  at org.gradle.api.internal.tasks.compile.daemon.AbstractIsolatedCompilerWorkerExecutor$CompilerWorkAction.execute(AbstractIsolatedCompilerWorkerExecutor.java:80)
  at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:68)
  at org.gradle.workers.internal.AbstractClassLoaderWorker$1.create(AbstractClassLoaderWorker.java:54)
  at org.gradle.workers.internal.AbstractClassLoaderWorker$1.create(AbstractClassLoaderWorker.java:48)
  at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:102)
  at org.gradle.workers.internal.AbstractClassLoaderWorker.executeInClassLoader(AbstractClassLoaderWorker.java:48)
  at org.gradle.workers.internal.FlatClassLoaderWorker.run(FlatClassLoaderWorker.java:32)
  at org.gradle.workers.internal.FlatClassLoaderWorker.run(FlatClassLoaderWorker.java:22)
  at org.gradle.workers.internal.WorkerDaemonServer.run(WorkerDaemonServer.java:108)
  at org.gradle.workers.internal.WorkerDaemonServer.run(WorkerDaemonServer.java:77)
  at org.gradle.process.internal.worker.request.WorkerAction.lambda$run$1(WorkerAction.java:150)
  at org.gradle.process.internal.worker.child.WorkerLogEventListener.withWorkerLoggingProtocol(WorkerLogEventListener.java:41)
  at org.gradle.process.internal.worker.request.WorkerAction.lambda$run$2(WorkerAction.java:150)
  at org.gradle.internal.operations.CurrentBuildOperationRef.with(CurrentBuildOperationRef.java:84)
  at org.gradle.process.internal.worker.request.WorkerAction.run(WorkerAction.java:142)
  at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
  at java.base/java.lang.reflect.Method.invoke(Method.java:565)
  at org.gradle.internal.dispatch.MethodInvocation.invokeOn(MethodInvocation.java:77)
  at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:28)
  at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:19)
  at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:182)
  at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:164)
  at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:414)
  at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
  at org.gradle.internal.concurrent.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:47)
  at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1090)
  at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614)
  at java.base/java.lang.Thread.run(Thread.java:1516)
Caused by: io.github.toolfactory.jvm.util.ObjectProvider$BuildingException: Exception occurred while retrieving the implementation of class io.github.toolfactory.jvm.function.catalog.GetClassByNameFunction (jvm architecture: x64, jvm version: 26, jvm vendor: Amazon.com Inc.)
  at io.github.toolfactory.jvm.util.ObjectProvider.getOrBuildObject(ObjectProvider.java:95)
  at io.github.toolfactory.jvm.DriverAbst.getOrBuildClassByNameRetriever(DriverAbst.java:430)
  at io.github.toolfactory.jvm.DriverAbst.refresh(DriverAbst.java:226)
  ... 57 more
Caused by: java.lang.reflect.InvocationTargetException
  at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:74)
  at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
  at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:483)
  at io.github.toolfactory.jvm.util.ObjectProvider.getOrBuildObjectInternal(ObjectProvider.java:144)
  at io.github.toolfactory.jvm.util.ObjectProvider.getOrBuildObject(ObjectProvider.java:92)
  ... 59 more
Caused by: java.lang.NoSuchMethodException: no such method: java.lang.Class.forName0(String,boolean,ClassLoader,Class)Class/invokeStatic
  at java.base/java.lang.invoke.MemberName.makeAccessException(MemberName.java:910)
  at java.base/java.lang.invoke.MemberName$Factory.resolveOrFail(MemberName.java:989)
  at java.base/java.lang.invoke.MethodHandles$Lookup.resolveOrFail(MethodHandles.java:3599)
  at java.base/java.lang.invoke.MethodHandles$Lookup.findStatic(MethodHandles.java:2522)
  at io.github.toolfactory.jvm.function.catalog.GetClassByNameFunction$ForJava7.retrieveClassFinder(GetClassByNameFunction.java:62)
  at io.github.toolfactory.jvm.function.catalog.GetClassByNameFunction$Abst.<init>(GetClassByNameFunction.java:45)
  at io.github.toolfactory.jvm.function.catalog.GetClassByNameFunction$ForJava7.<init>(GetClassByNameFunction.java:55)
  at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62)
  ... 63 more
Caused by: java.lang.NoSuchMethodError: method resolution failed
  at java.base/java.lang.invoke.MethodHandleNatives.resolve(Native Method)
  at java.base/java.lang.invoke.MemberName$Factory.resolve(MemberName.java:957)
  at java.base/java.lang.invoke.MemberName$Factory.resolveOrFail(MemberName.java:986)
  ... 69 more

Expected Behavior

No exception is thrown and the dd-trace-java agent performs as it does with Java 25.

Reproduction Code

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    type: bugBug report and fix

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions