在运行时更新NewRelic版本时抛出AbstractMethodError错误。

3 浏览
0 Comments

在运行时更新NewRelic版本时抛出AbstractMethodError错误。

我正在一个项目中将newrelic版本从2.x.x更新到5.x.x。我按照newrelic文档中提到的步骤进行操作(我更新了pom文件中的依赖版本,更新了代理jar文件和配置文件)。\n但是现在在运行项目时,通过传递所需的javaagent参数:\njava -server -javaagent:/Users/amit.upadhyay/abcproject/abcproject-app/newrelic-stage/newrelic.jar -jar abcproject-app/target/abcproject-app-*.*.*-SNAPSHOT.jar /Users/amit.upadhyay/Downloads/abcproject.yml\n我遇到了java.lang.AbstractMethodError错误。下面是错误日志:\nERROR StatusLogger Caught java.lang.AbstractMethodError设置特性http://xml.org/sax/features/external-general-entities为false,位于DocumentBuilderFactory org.apache.xerces.jaxp.DocumentBuilderFactoryImpl@e320068上:java.lang.AbstractMethodError:javax.xml.parsers.DocumentBuilderFactory.setFeature(Ljava / lang / String; Z)V java.lang.AbstractMethodError:javax.xml.parsers.DocumentBuilderFactory.setFeature(Ljava / lang / String; Z)V在com.newrelic.agent.deps.org.apache.logging.log4j.core.config.xml.XmlConfiguration.setFeature(XmlConfiguration.java:212)中 at at com.newrelic.agent.deps.org.apache.logging.log4j.core.config.xml.XmlConfiguration.disableDtdProcessing(XmlConfiguration.java:205)at at com.newrelic.agent.deps.org.apache.logging.log4j.core.config.xml.XmlConfiguration.newDocumentBuilder(XmlConfiguration.java:194)at at com.newrelic.agent.deps.org.apache.logging.log4j.core.config.xml.XmlConfiguration.(XmlConfiguration.java:92)at at com.newrelic.agent.deps.org.apache.logging.log4j.core.config.xml.XmlConfigurationFactory.getConfiguration(XmlConfigurationFactory.java:46)at at com.newrelic.agent.deps.org.apache.logging.log4j.core.config.ConfigurationFactory $ Factory.getConfiguration(ConfigurationFactory.java:420)at at com.newrelic.agent.deps.org.apache.logging.log4j.core.config.ConfigurationFactory $ Factory.getConfiguration(ConfigurationFactory.java:347)at at com.newrelic.agent.deps.org.apache.logging.log4j.core.config.ConfigurationFactory.getConfiguration(ConfigurationFactory.java:261)at at com.newrelic.agent.deps.org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:616)at at com.newrelic.agent.deps.org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:637)at at com.newrelic.agent.deps.org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:231)at at com.newrelic.agent.deps.org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:243)at at com.newrelic.agent.deps.org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:45)at at com.newrelic.agent.deps.org.apache.logging.log4j.LogManager.getContext(LogManager.java:174)at at com.newrelic.agent.deps.org.apache.logging.log4j.LogManager.getLogger(LogManager.java:648)at at com.newrelic.agent.logging.Log4jLogger.(Log4jLogger.java:68)at at com.newrelic.agent.logging.Log4jLogger.create(Log4jLogger.java:415)at at com.newrelic.agent.logging.Log4jLogManager.createRootLogger(Log4jLogManager.java:38)at at com.newrelic.agent.logging.Log4jLogManager.initializeRootLogger(Log4jLogManager.java:98)at at com.newrelic.agent.logging.Log4jLogManager.(Log4jLogManager.java:34)at at com.newrelic.agent.logging.Log4jLogManager.create(Log4jLogManager.java:254)at at com.newrelic.agent.logging.AgentLogManager.createAgentLogManager(AgentLogManager.java:19)at at com.newrelic.agent.logging.AgentLogManager.(AgentLogManager.java:9)at at com.newrelic.agent.Agent.(Agent.java:59)at at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at at java.lang.reflect.Method.invoke(Method.java:498)at at com.newrelic.bootstrap.BootstrapAgent.startAgent(BootstrapAgent.java:179)at at com.newrelic.bootstrap.BootstrapAgent.premain(BootstrapAgent.java:81)at at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at at java.lang.reflect.Method.invoke(Method.java:498)at at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:386)at at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:401)ERROR StatusLogger Caught java.lang.AbstractMethodError设置特性http://xml.org/sax/features/external-parameter-entities为false,位于DocumentBuilderFactory org.apache.xerces.jaxp.DocumentBuilderFactoryImpl@e320068上:java.lang.AbstractMethodError:javax.xml.parsers.DocumentBuilderFactory.setFeature(Ljava / lang / String; Z)V java.lang.AbstractMethodError:javax.xml.parsers.DocumentBuilderFactory.setFeature(Ljava / lang / String; Z)V在com.newrelic.agent.deps.org.apache.logging.log4j.core.config.xml.XmlConfiguration.setFeature(XmlConfiguration.java:212)中 at at com.newrelic.agent.deps.org.apache.logging.log4j.core.config.xml.XmlConfiguration.disableDtdProcessing(XmlConfiguration.java:206)at at com.newrelic.agent.deps.org.apache.logging.log4j.core.config.xml.XmlConfiguration.newDocumentBuilder(XmlConfiguration.java:194)at at com.newrelic.agent.deps.org.apache.logging.log4j.core.config.xml.XmlConfiguration.(XmlConfiguration.java:92)at at com.newrelic.agent.deps.org.apache.logging.log4j.core.config.xml.XmlConfigurationFactory.getConfiguration(XmlConfigurationFactory.java:46)at at com.newrelic.agent.deps.org.apache.logging.log4j.core.config.ConfigurationFactory $ Factory.getConfiguration(ConfigurationFactory.java:420)at at com.newrelic.agent.deps.org.apache.logging.log4j.core.config.ConfigurationFactory $ Factory.getConfiguration(ConfigurationFactory.java:347)at at com.newrelic.agent.deps.org.apache.logging.log4j.core.config.ConfigurationFactory.getConfiguration(ConfigurationFactory.java:261)at at com.newrelic.agent.deps.org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:616)at at com.newrelic.agent.deps.org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:637)at at com.newrelic.agent.deps.org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:231)at at com.newrelic.agent.deps.org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:243)at at com.newrelic.agent.deps.org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:45)at at com.newrelic.agent.deps.org.apache.logging.log4j.LogManager.getContext(LogManager.java:174)at at com.newrelic.agent.deps.org.apache.logging.log4j.LogManager.getLogger(LogManager.java:648)at at com.newrelic.agent.logging.Log4jLogger.(Log4jLogger.java:68)at at com.newrelic.agent.logging.Log4jLogger.create(Log4jLogger.java:415)at at com.newrelic.agent.logging.Log4jLogManager.createRootLogger(Log4jLogManager.java:38)at at com.newrelic.agent.logging.Log4jLogManager.initializeRootLogger(Log4jLogManager.java:98)at at com.newrelic.agent.logging.Log4jLogManager.(Log4jLogManager.java:34)at at com.newrelic.agent.logging.Log4jLogManager.create(Log4jLogManager.java:254)at at com.newrelic.agent.logging.AgentLogManager.createAgentLogManager(AgentLogManager.java:19)at at com.newrelic.agent.logging.AgentLogManager.(AgentLogManager.java:9)at at com.newrelic.agent.Agent.(Agent.java:59)at at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at at java.lang.reflect.Method.invoke(Method.java:498)at at com.newrelic.bootstrap.BootstrapAgent.startAgent(BootstrapAgent.java:179)at at com.newrelic.bootstrap.BootstrapAgent.premain(BootstrapAgent.java:81)at at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at at java.lang.reflect.Method.invoke(Method.java:498)at at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:386)at at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:401)ERROR StatusLogger Caught java.lang.AbstractMethodError设置特性http://apache.org/xml/features/nonvalidating/load-external-dtd为false,位于DocumentBuilderFactory org.apache.xerces.jaxp.DocumentBuilderFactoryImpl@e320068上:java.lang.AbstractMethodError:javax.xml.parsers.DocumentBuilderFactory.setFeature(Ljava / lang / String; Z)V java.lang.AbstractMethodError:javax.xml.parsers.DocumentBuilderFactory.setFeature(Ljava / lang / String; Z)V在com.newrelic.agent.deps.org.apache.logging.log4j.core.config.xml.XmlConfiguration.setFeature(XmlConfiguration.java:212)中 at at com.newrelic.agent.deps.org.apache.logging.log4j.core.config.xml.XmlConfiguration.disableDtdProcessing(XmlConfiguration.java:207)at at com.newrelic.agent.deps.org.apache.logging.log4j.core.config.xml.XmlConfiguration.newDocumentBuilder(XmlConfiguration.java:194)at at com.newrelic.agent.deps.org.apache.logging.log4j.core.config.xml.XmlConfiguration.(XmlConfiguration.java:92)at at com.newrelic.agent.deps.org.apache.logging.log4j.core.config.xml.XmlConfigurationFactory.getConfiguration(XmlConfigurationFactory.java:46)at at com.newrelic.agent.deps.org.apache.logging.log4j.core.config.ConfigurationFactory $ Factory.getConfiguration(ConfigurationFactory.java:420)at at com.newrelic.agent.deps.org.apache.logging.log4j.core.config.ConfigurationFactory $ Factory.getConfiguration(ConfigurationFactory.java:347)at at com.newrelic.agent.deps.org.apache.logging.log4j.core.config.ConfigurationFactory.getConfiguration(ConfigurationFactory.java:261)at at com.newrelic.agent.deps.org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:616)at at com.newrelic.agent.deps.org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:637)at at com.newrelic.agent.deps.org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:231)at at com.newrelic.agent.deps.org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:243)at at com.newrelic.agent.deps.org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:45)at at com.newrelic.agent.deps.org.apache.logging.log4j.LogManager.getContext(LogManager.java:174)at at com.newrelic.agent.deps.org.apache.logging.log4j.LogManager.getLogger(LogManager.java:648)at at com.newrelic.agent.logging.Log4jLogger.(Log4jLogger.java:68)at at com.newrelic.agent.logging.Log4jLogger.create(Log4jLogger.java:415)at at com.newrelic.agent.logging.Log4jLogManager.createRootLogger(Log4jLogManager.java:38)at at com.newrelic.agent.logging.Log4jLogManager.initializeRootLogger(Log4jLogManager.java:98)at at com.newrelic.agent.logging.Log4jLogManager.(Log4jLogManager.java:34)at at com.newrelic.agent.logging.Log4jLogManager.create(Log4jLogManager.java:254)at at com.newrelic.agent.logging.AgentLogManager.createAgentLogManager(AgentLogManager.java:19)at at com.newrelic.agent.logging.AgentLogManager.(AgentLogManager.java:9)at at com.newrelic.agent.Agent.(Agent.java:59)at at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at at java.lang.reflect.Method.invoke(Method.java:498)at at com.newrelic.bootstrap.BootstrapAgent.startAgent(BootstrapAgent.java:179)at at com.newrelic.bootstrap.BootstrapAgent.premain(BootstrapAgent.java:81)at at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at at java.lang.reflect.Method.invoke(Method.java:498)at at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:386)at at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:401)Mar 16, 2020 01:40:38 +0530 [8698 1] com.newrelic INFO:找不到配置文件。代理将尝试从环境变量中读取所需的值。Mar 16, 2020 01:40:38 +0530 [8698 1] com.newrelic INFO:使用默认的收集器主机:collector.newrelic.comMar 16, 2020 01:40:38 +0530 [8698 1] com.newrelic ERROR:无法启动New Relic代理。您的应用程序将继续运行,但将不会被监视。com.newrelic.agent.config.ConfigurationException:代理需要应用程序名称。检查newrelic.yml中的app_name设置在com.newrelic.agent.config.ConfigServiceFactory.validateConfig(ConfigServiceFactory.java:64)中at at com.newrelic.agent.config.ConfigServiceFactory.createConfigService(ConfigServiceFactory.java:27)中at at com.newrelic.agent.service.ServiceManagerImpl.(ServiceManagerImpl.java:126)at at com.newrelic.agent.Agent.premain(Agent.java:279)at at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at at java.lang.reflect.Method.invoke(Method.java:498)at at com.newrelic.bootstrap.BootstrapAgent.startAgent(BootstrapAgent.java:179)at at com.newrelic.bootstrap.BootstrapAgent.premain(BootstrapAgent.java:81)at at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at at java.lang.reflect.Method.invoke(Method.java:498)at at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:386)at at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:401)现在,我不明白为什么会抛出ConfigurationException(或为什么无法找到配置文件)。使用旧版本的newrelic代理程序(2.x.x或3.x.x)时,完全相同的java命令(具有完全相同的代理jar和配置文件路径)可以正常运行。\n我想了解这里出了什么问题/遗漏了什么?

0
0 Comments

更新NewRelic版本后,在运行时抛出AbstractMethodError错误的问题出现的原因是他们在Java代理中更新了xerces版本,新版本大于5.0.0。除了更新xerces版本的修复之外,我还需要将newrelic配置文件作为系统属性显式传递,以解决ConfigurationException错误。

总体概述:

- 将以下库更新为:

<dependency>

<groupId>xerces</groupId>

<artifactId>xercesImpl</artifactId>

<version>2.11.0</version>

</dependency>

<dependency>

<groupId>xml-apis</groupId>

<artifactId>xml-apis</artifactId>

<version>1.4.01</version>

</dependency>

并将newrelic配置文件作为系统属性传递:

-Dnewrelic.config.file=./${NEW_RELIC_DIR_NAME}/newrelic.yml

0