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

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions