可查询的可序列化类:在ActiveMQ中查看消息时出现java.lang.ClassNotFoundException

Owl*_*wlR 10 java activemq-classic jms classnotfoundexception

我希望看到已在ActiveMQ队列中排队的消息内容.我打开了web-console.(http:// localhost:8161/admin/queues.jsp)并点击了队列消息的message-id.它在"消息详细信息"窗口中给出了以下错误,而不是给出消息内容.

"javax.jms.JMSException:无法从内容构建正文.可序列化的类不可用于代理.原因:java.lang.ClassNotFoundException:"

这个异常的原因是什么?我需要做些什么来摆脱这个?

小智 5

正如 OwIR 提到的,您需要将包含类的 jar 文件的路径设置wrapper.java.classpath.3%ACTIVEMQ_HOME%\bin\win64\wrapper.conf.

更新上述属性后,您可能会遇到以下异常

Serializable class not available to broker. Reason: java.lang.ClassNotFoundException: Forbidden class
Run Code Online (Sandbox Code Playgroud)

为了修复它,请将wrapper.java.additional.13属性设置为-Dorg.apache.activemq.SERIALIZABLE_PACKAGES="<choose_the_packages_set_it_here>"

您也可以将-Dorg.apache.activemq.SERIALIZABLE_PACKAGES="*"其用作值,但使用通配符可能不安全。

这对我有用!希望对您有帮助


chi*_*him 4

我使用 ActiveMQ 版本 5.8.0 看到了同样的错误

在我的例子中,这是一个转移注意力的问题,ActiveMQ 控制台无法反序列化消息,它不能访问该类所在的 jar,但消费者应用程序可以,并且消息会毫无问题地从队列传递到消费者。

我很想知道这里是否有解决该问题的方法(在控制台中查看消息),以及在最新版本的 ActiveMQ 中如何处理此问题。

  • 原因是:自定义类不在活动 mq 代理的类路径中。我们可以通过在“ActiveMQ\bin\win64\wrapper.conf”文件中添加以下内容来将自定义类添加到代理的类路径中。**wrapper.java.classpath.3=&lt;包含自定义类 jar 的 jar 的路径&gt;** (路径可以是任何具有自定义 jar 的路径) (3认同)