这是一个非常奇怪的问题。我正在尝试将 snmp4j 从 1.10.1 升级到最新版本(2.2.5),现在我从 ActiveMQ(版本 5.9.1)中收到 stackoverflowerror。我有一个奇怪的解决方法,但如果有人能更清楚地了解这个问题,那将会很有趣。
当 snmp4j 加载 SnmpRequest 类并执行此静态块时,会发生 stackoverflow:
static {
LogFactory.setLogFactory(new Log4jLogFactory());
org.apache.log4j.BasicConfigurator.configure();
BER.setCheckSequenceLength(false);
}
BasicConfigurator.configure()
调用时 ActiveMQ 崩溃。我的解决方法是在启动时(在 ActiveMQ 初始化之前)构造(加载)一个 SnmpRequest 对象。在 snmp4j 版本 1.10.1 中,SnmpRequest 类有一个不同的静态块,没有configure()
调用。
下面是 stackoverflowerror 的跟踪:
6688 [ActiveMQ VMTransport: vm://Server#1-1] SYSTM SystemError -
4550 [ActiveMQ VMTransport: vm://Server#1-1] TRACE org
6689 [ActiveMQ VMTransport: vm://Server#1-1] SYSTM SystemError -
4550 [ActiveMQ VMTransport: vm://Server#1-1] TRACE org
6691 [ActiveMQ VMTransport: vm://Server#1-1] SYSTM SystemError -
4550 [ActiveMQ VMTransport: vm://JServer#1-1] TRACE org
6693 [ActiveMQ VMTransport: vm://Server#1-1] SYSTM SystemError -
4550 [ActiveMQ VMTransport: vm://Server#1-1]
我相信这将是标准错误,这都是一条大线。