我们使用SpringBoot 1.4.7 web来部署ActiveMq 5.13.5代理。构建工件是一个由java命令启动的jar文件。大多数时候,它运行顺利,没有任何问题。但是,如果不重新启动应用程序,它会每天一次或两次随机抛出以下异常:
java.io.IOException: Unexpected error occurred: java.lang.NoClassDefFoundError: org/apache/activemq/command/ActiveMQTextMessage at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:222) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.NoClassDefFoundError: org/apache/activemq/command/ActiveMQTextMessage at org.apache.activemq.openwire.v11.ActiveMQTextMessageMarshaller.createObject(ActiveMQTextMessageMarshaller.java:55) at org.apache.activemq.openwire.OpenWireFormat.doUnmarshal(OpenWireFormat.java:360) at org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:277) at org.apache.activemq.transport.tcp.TcpTransport.readCommand(TcpTransport.java:240) at org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:232) at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:215) ... 1 common frames omitted Caused by: java.lang.ClassNotFoundException: org.apache.activemq.command.ActiveMQTextMessage at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:94) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 7 common frames omitted
我通过输出类加载调试确保在异常时间之前加载了类ActiveMQTextMessage。我还确保系统有足够的可用容量用于CPU,内存(堆和元),磁盘,文件句柄和套接字。
我在这里有几个问题:
非常感谢任何进一步调试此类问题的提示。
修改 编译和运行时的依赖关系树发布在此处:https://gist.github.com/liuzy163/8b8f8c7119624b5bdbe30e133d5f5910