AbstractMethodError when Dynatrace OneAgent and the OpenTelemetry plugins are enabled together

Last Reviewed:2026-09-22()
2 minute readKnowledge base

Issue

When the Dynatrace OneAgent for Java is injected into the CloudBees CI JVM using the -agentpath argument, and the OpenTelemetry plugin and OpenTelemetry API plugin plugins are also installed, the controller UI intermittently shows "Oops! A problem occurred while processing the request". The following exceptions appear in the controller logs:

WARNING h.i.i.InstallUncaughtExceptionHandler#handleException: Caught unhandled exception with ID ... java.lang.AbstractMethodError: Method com/dynatrace/agent/introspection/span/opentelemetry_incubator/DynatraceExtendedTracer.spanBuilder(Ljava/lang/String;)Lio/opentelemetry/api/incubator/trace/ExtendedSpanBuilder; is abstract at PluginClassLoader for opentelemetry-api//com.dynatrace.agent.introspection.span.opentelemetry_incubator.DynatraceExtendedTracer.spanBuilder(DynatraceExtendedTracer.java)
WARNING h.i.i.InstallUncaughtExceptionHandler#handleException: Caught unhandled exception with ID ... java.lang.AbstractMethodError: Receiver class com.dynatrace.agent.introspection.span.opentelemetry_incubator.DynatraceExtendedTracer does not define or inherit an implementation of the resolved method 'abstract io.opentelemetry.api.incubator.trace.ExtendedSpanBuilder spanBuilder(java.lang.String)' of interface io.opentelemetry.api.incubator.trace.ExtendedTracer. at PluginClassLoader for opentelemetry-api//io.jenkins.plugins.opentelemetry.api.ReconfigurableTracerProvider$ReconfigurableExtendedTracer.spanBuilder(ReconfigurableTracerProvider.java:190)

This prevents UI pages from rendering and causes intermittent, high-volume logging noise on affected controllers.

Environment

The OpenTelemetry plugin and OpenTelemetry API plugin plugins are community-supported plugins. CloudBees cannot guarantee bug fixes for these plugins, and Dynatrace OneAgent is a third-party product outside of CloudBees support.

Explanation

Starting with version 1.49.0, the OpenTelemetry API plugin plugin picked up a newer OpenTelemetry API that renamed the spanBuilder() return type from SpanBuilder to ExtendedSpanBuilder (see the opentelemetry-api-plugin pull request #40 that introduced this change).

The suspected, unconfirmed root cause is that the Dynatrace OneAgent for Java ships its own bundled copy of an older OpenTelemetry API, one that still implements the previous SpanBuilder signature. Depending on class-loading order during controller startup, that older Dynatrace-bundled OpenTelemetry API class can be resolved instead of the one shipped by the OpenTelemetry API plugin plugin. This causes the two incompatible method signatures to collide and throw AbstractMethodError.

Resolution

No permanent fix is available. See Workaround below.

Workaround

Two workarounds have been validated:

Option 1: Uninstall the OpenTelemetry plugins

  1. Navigate to Manage Jenkins  Plugins  Installed plugins.

  2. Uninstall the OpenTelemetry plugin and OpenTelemetry API plugin.

  3. Restart the controller.

Option 2: Disable the conflicting Dynatrace OneAgent instrumentation while keeping the plugins installed

  1. In the Dynatrace OneAgent configuration, disable the following features:

    JAVA_OPENTELEMETRY_JAVA_INSTRUMENTATION_AGENT
    JAVA_OPENTRACING_OVERRIDE
    JAVA_OPENTELEMETRY
    JAVA_OPENTRACING_TRACERRESOLVER_OVERRIDE
    JAVA_OPENTRACING
    OneAgent features to disable
  2. Restart the affected controller.

  3. If the "Oops!" error page still appears after the restart, clear the browser cache.

Tested product/plugin versions

This article is part of our Knowledge Base and is provided for guidance-based purposes only. The solutions or workarounds described here are not officially supported by CloudBees and may not be applicable in all environments. Use at your own discretion, and test changes in a safe environment before applying them to production systems.