Integrating New Relic Agent with Java 17: java.sql.SQLException NoClassDefFoundError

I’m trying to integrate newrelic-agent for metrics. I’m using the below newrelic version and while running locally, it is working fine.

            <groupId>com.newrelic.agent.java</groupId>
            <artifactId>newrelic-agent</artifactId>
            <version>8.5.0</version>

downloaded my newrelic.jar from
curl -O https://download.newrelic.com/newrelic/java-agent/newrelic-agent/current/newrelic-java.zip
But when I add my service to docker with this image of java 17 linux/x86_64 openjdk:17-jdk-buster, I’m getting NoClassDefFoundError Exception. Error Details

Unable to start New Relic Agent. Please remove -javaagent from your startup arguments and contact New Relic support.
java.lang.NoClassDefFoundError: java/sql/SQLException
    at com.newrelic.agent.database.ParsedDatabaseStatement.<init>(ParsedDatabaseStatement.java:26)
    at com.newrelic.agent.database.SelectVariableStatementFactory.<init>(SelectVariableStatementFactory.java:19)
    at com.newrelic.agent.database.DefaultDatabaseStatementParser.<init>(DefaultDatabaseStatementParser.java:55)
    at com.newrelic.agent.database.DatabaseService.<init>(DatabaseService.java:40)
    at com.newrelic.agent.service.ServiceManagerImpl.doStart(ServiceManagerImpl.java:260)
    at com.newrelic.agent.service.AbstractService.start(AbstractService.java:63)
    at com.newrelic.agent.Agent.continuePremain(Agent.java:173)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at com.newrelic.bootstrap.BootstrapAgent.startAgent(BootstrapAgent.java:175)
    at com.newrelic.bootstrap.BootstrapAgent.premain(BootstrapAgent.java:117)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at java.instrument/sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:491)
    at java.instrument/sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:503)
Caused by: java.lang.ClassNotFoundException: java.sql.SQLException
    at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:445)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:587)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
    ... 19 more

I tried with different versions of newrelic-agent and changed the mysql-connector version

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.16</version>
        </dependency>

  • Are you using Resin?

    – 

  • No I’m not using it

    – 

Leave a Comment