ActiveMQ服务启动失败:NoSuchMethod org.codehaus.jackson.type异常
ActiveMQ Classic 5.10.1升级至5.17.6启动报错解决方法
问题背景
在Windows Server 2019上将ActiveMQ Classic从5.10.1升级到5.17.6,复制旧目录的conf和data到新目录后,启动时先出现:
Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/codehaus/jackson/map/ObjectMapper
手动添加org.codehaus.jackson.mapper相关jar包到activemq\lib目录后,又出现新报错:
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.fusesource.insight.log.log4j.Log4jLogQuery]: Constructor threw exception; nested exception is java.lang.NoSuchMethodError: 'void org.codehaus.jackson.type.JavaType.<init>(java.lang.Class)'
问题原因
手动添加的jackson mapper jar包与ActiveMQ 5.17.6自带的jackson核心jar版本不匹配,导致方法调用冲突。ActiveMQ不同版本对jackson组件的版本要求差异较大,5.17.6自带的依赖组件已经完整,手动单独添加jar会破坏依赖一致性;同时直接复制旧conf目录引入了过时的组件配置(如org.fusesource.insight相关内容),进一步触发报错。
解决步骤
移除手动添加的jar包
找到新安装目录activemq\lib下手动放入的org.codehaus.jackson.mapper相关jar包,直接删除。迁移而非直接覆盖配置文件
- 备份新目录的
conf文件夹,然后将旧conf中的业务相关配置(如队列/主题定义、连接参数等)逐个迁移到新conf的对应文件中,不要直接覆盖整个目录。 - 重点检查
activemq.xml、log4j.properties,移除所有引用org.fusesource.insight的配置项,5.17.6已不再默认支持该组件。
- 备份新目录的
使用官方自带依赖
确保新安装目录lib下的jar包均为官方安装包自带,无额外添加或删除,5.17.6已经包含所有必需的jackson组件。重启服务
切换到新安装目录的bin文件夹,执行命令启动:activemq start或在Windows服务列表中重新启动ActiveMQ服务。
额外注意
- 不要直接复制旧
data目录,如需保留旧消息,建议先备份旧data,启动新版本后再通过官方工具迁移数据,避免新旧版本数据文件不兼容。 - 升级前建议对比新旧版本的官方配置文档,确认配置参数的变化,避免引入过时配置。
内容的提问来源于stack exchange,提问作者overflowed
相关产品推荐
相关产品推荐

