将 New Relic Agent 与 Java 17 集成:java.sql.SQLException NoClassDefFoundError

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

提问人:Pujitha 提问时间:9/23/2023 更新时间:9/23/2023 访问量:53

问:

我正在尝试为指标集成 newrelic-agent。我正在使用下面的 newrelic 版本,在本地运行时,它工作正常。

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

从以下位置下载了我的新遗物.jar curl -O https://download.newrelic.com/newrelic/java-agent/newrelic-agent/current/newrelic-java.zip 但是当我使用 java 17 linux/x86_64 openjdk:17-jdk-buster 的映像将我的服务添加到 docker 时,我收到 NoClassDefFoundError 异常。错误详细信息

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

我尝试使用不同版本的 newrelic-agent 并更改了 mysql-connector 版本

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.16</version>
        </dependency>
noclassdeffounderror newrelic SQLException java-17

评论

0赞 André Onuki 9/23/2023
您在使用 Resin 吗?
0赞 Pujitha 9/23/2023
不,我没有使用它
0赞 André Onuki 9/24/2023
我们已经看到 Resin 发生了这种情况。我相信旧版本的 J9。这与MySql无关。java/sql/SQLException 是一个核心 Java 类。
0赞 André Onuki 9/24/2023
如果您有重现,请在 Github 存储库上开票证。github.com/newrelic/newrelic-java-agent/

答: 暂无答案