Skip to content

[Jdk 24] Javaagent failed to start java.lang.ExceptionInInitializerErrorΒ #14421

@maradanasai

Description

@maradanasai

Describe the bug

We are getting following error for app using jdk 24 with opentelemetry java agent.

Picked up JAVA_TOOL_OPTIONS:  -javaagent:/otel-auto-instrumentation-java-snap-engine/javaagent.jar
2025-08-13 13:03:08.634	
OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended
2025-08-13 13:03:08.857	
[otel.javaagent 2025-08-13 07:33:08:855 +0000] [main] INFO io.opentelemetry.javaagent.tooling.VersionLogger - opentelemetry-javaagent - version: 1.33.6
2025-08-13 13:03:09.248	
WARNING: A terminally deprecated method in sun.misc.Unsafe has been called
2025-08-13 13:03:09.248	
WARNING: sun.misc.Unsafe::objectFieldOffset has been called by io.opentelemetry.internal.shaded.jctools.util.UnsafeAccess (file:/otel-auto-instrumentation-java-snap-engine/javaagent.jar)
2025-08-13 13:03:09.248	
WARNING: Please consider reporting this to the maintainers of class io.opentelemetry.internal.shaded.jctools.util.UnsafeAccess
2025-08-13 13:03:09.248	
WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release
2025-08-13 13:03:09.427	
OpenTelemetry Javaagent failed to start
2025-08-13 13:03:09.427	
java.lang.ExceptionInInitializerError
2025-08-13 13:03:09.427	
	at io.opentelemetry.javaagent.tooling.muzzle.AgentTooling.<clinit>(AgentTooling.java:23)
2025-08-13 13:03:09.427	
	at io.opentelemetry.javaagent.tooling.AgentInstaller.installBytebuddyAgent(AgentInstaller.java:151)
2025-08-13 13:03:09.427	
	at io.opentelemetry.javaagent.tooling.AgentInstaller.installBytebuddyAgent(AgentInstaller.java:103)

2025-08-13 13:03:09.427	
	at io.opentelemetry.javaagent.tooling.AgentStarterImpl.start(AgentStarterImpl.java:98)
2025-08-13 13:03:09.427	
	at io.opentelemetry.javaagent.bootstrap.AgentInitializer$1.run(AgentInitializer.java:53)
2025-08-13 13:03:09.427	
	at io.opentelemetry.javaagent.bootstrap.AgentInitializer$1.run(AgentInitializer.java:47)
2025-08-13 13:03:09.427	
	at io.opentelemetry.javaagent.bootstrap.AgentInitializer.execute(AgentInitializer.java:68)
2025-08-13 13:03:09.427	
	at io.opentelemetry.javaagent.bootstrap.AgentInitializer.initialize(AgentInitializer.java:46)
2025-08-13 13:03:09.427	
	at io.opentelemetry.javaagent.OpenTelemetryAgent.startAgent(OpenTelemetryAgent.java:57)
2025-08-13 13:03:09.427	
	at io.opentelemetry.javaagent.OpenTelemetryAgent.premain(OpenTelemetryAgent.java:45)
2025-08-13 13:03:09.427	
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Unknown Source)
2025-08-13 13:03:09.427	
	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
2025-08-13 13:03:09.427	
	at java.instrument/sun.instrument.InstrumentationImpl.loadClassAndStartAgent(Unknown Source)
2025-08-13 13:03:09.427	
	at java.instrument/sun.instrument.InstrumentationImpl.loadClassAndCallPremain(Unknown Source)
2025-08-13 13:03:09.427	
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Class java.lang.ClassLoader.findLoadedClass(java.lang.String) accessible: module java.base does not "opens java.lang" to unnamed module @4909b8da
2025-08-13 13:03:09.427	
	at java.base/java.lang.reflect.AccessibleObject.throwInaccessibleObjectException(Unknown Source)
2025-08-13 13:03:09.427	
	at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(Unknown Source)
2025-08-13 13:03:09.427	
	at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(Unknown Source)
2025-08-13 13:03:09.428	
	at java.base/java.lang.reflect.Method.checkCanSetAccessible(Unknown Source)
2025-08-13 13:03:09.428	
	at java.base/java.lang.reflect.Method.setAccessible(Unknown Source)
2025-08-13 13:03:09.428	
	at io.opentelemetry.javaagent.tooling.muzzle.AgentCachingPoolStrategy.getFindLoadedClassMethod(AgentCachingPoolStrategy.java:115)
2025-08-13 13:03:09.428	
	at io.opentelemetry.javaagent.tooling.muzzle.AgentCachingPoolStrategy.<clinit>(AgentCachingPoolStrategy.java:58)
2025-08-13 13:03:09.428```

Jdk image version: bellsoft/liberica-openjre-debian:24-cds
opentelemetry operator version: 0.131.0 (java auto instrumentation)
opentelemetry java instrumentation version: 2.18.1

### Steps to reproduce

Build spring boot 3.4.x application and attach latest opentelemetry javaagent in dockerfile cmd args. When we run the container, application starts and provide the mentioned logs

### Expected behavior

Should work as expected with Jdk 24 and able to export all signals to collector

### Actual behavior

Getting java.lang.ExceptionInInitializerError error

### Javaagent or library instrumentation version

2.18.1

### Environment

**JDK**:
**OS**:


### Additional context

_No response_

### Tip

<sub>[React](https://github.blog/news-insights/product-news/add-reactions-to-pull-requests-issues-and-comments/) with πŸ‘ to help prioritize this issue. Please use comments to provide useful context, avoiding `+1` or `me too`, to help us triage it. Learn more [here](https://opentelemetry.io/community/end-user/issue-participation/).</sub>

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingneeds triageNew issue that requires triage

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions