Click the Start a free trial link to start a 15-day SaaS trial of our product and join our community as a trial user. If you are an existing customer do not start a free trial.
AppDynamics customers and established members should click the sign in button to authenticate.
In K8S, on a pod running a Spring Boot 3.x application (with OpenJDK 17) auto-instrumented by cluster-agent, the Java Agent fails on startup:
[AD Agent init] Wed Sep 27 22:27:38 PDT 2023[INFO]: JavaAgent - Java Agent Directory [/opt/appdynamics-java/ver18.104.22.168210]
[AD Agent init] Wed Sep 27 22:27:38 PDT 2023[INFO]: JavaAgent - Java Agent AppAgent directory [/opt/appdynamics-java/ver22.214.171.124210]
Agent logging directory set to [/opt/appdynamics-java/ver126.96.36.199210/logs]
[AD Agent init] Wed Sep 27 22:27:38 PDT 2023[INFO]: JavaAgent - Agent logging directory set to [/opt/appdynamics-java/ver188.8.131.52210/logs]
Could not start Java Agent, disabling the agent with exception java.lang.NoClassDefFoundError: Could not initialize class org.apache.logging.log4j.message.ReusableMessageFactory, Please check log files
In the pod, the jar file (log4j-api) containing the ReusableMessageFactory is there (part of the appdynamics java-agent):
sh-4.4$ ls log4j*
log4j-api-184.108.40.206.9.cached.packages.txt log4j-core-220.127.116.11.9.cached.packages.txt log4j-jcl-2.17.1.cached.packages.txt
log4j-api-18.104.22.168.9.jar log4j-core-22.214.171.124.9.jar log4j-jcl-2.17.1.jar
log4j-api-126.96.36.199.9.jar.asc log4j-core-188.8.131.52.9.jar.asc log4j-jcl-2.17.1.jar.asc
From the POD manifest:
- name: JAVA_TOOL_OPTIONS
value: ' -Dappdynamics.agent.accountAccessKey=$(APPDYNAMICS_AGENT_ACCOUNT_ACCESS_KEY)
I tried with the latest java-agent (23.9) but same result. I don't seem to have the problem with SpringBoot 2.7 (which does include log4j-api as opposed to 3.x). It seems the classloader can't find the class from the java-agent distribution.)
Has anyone encountered this ?
Solved! Go to Solution.
For reasons I don't understand, the problem is fixed when I increase the JVM option --XXMaxJavaStackTraceDepth above 10. Any value below 10 causes the NoClassDefFoundError error.
If anyone has an explaination, much appreciated (does it have anything to do with maximum-activity-trace-stack default value of 10 ?