首页 > 解决方案 > 使用骆驼从 RabbitMq 读取消息时,quarkus 开发模式下的 ClassNotFound 异常

问题描述

我正在使用 apache-camel-quarkus 从 RabbitMq 队列中读取数据,并且在生产中一切正常。但是当我在开发模式下运行它并尝试执行使用 RabbitMq 的用例时,我在反序列化队列中的消息时遇到异常

java.lang.ClassNotFoundException: messaging.model.ReportAvailableMessage
    at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:429)
    at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:405)
    at java.base/java.lang.Class.forName0(Native Method)
    at java.base/java.lang.Class.forName(Class.java:398)
    at java.base/java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:756)
    at java.base/java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1995)
    at java.base/java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1862)
    at java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2169)
    at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1679)
    at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:493)
    at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:451)
    at org.apache.camel.component.rabbitmq.RabbitMQMessageConverter.deserializeBody(RabbitMQMessageConverter.java:354)
    at org.apache.camel.component.rabbitmq.RabbitMQMessageConverter.populateMessageBody(RabbitMQMessageConverter.java:344)
    at org.apache.camel.component.rabbitmq.RabbitMQMessageConverter.populateRabbitExchange(RabbitMQMessageConverter.java:289)

它与开发模式下的类路径有些相关。集成测试也发生了同样的情况,我不得不使用这个属性来修复它

quarkus.test.flat-class-path=true

我进行了一些搜索并尝试使用quarkus.class-loading.parent-first-artifacts我的应用程序的工件 ID,但它也不起作用。

有谁知道我该如何解决这个问题?谢谢

环境:Quarkus 版本:2.4.0.Final,Camel:2.2.0

标签: apache-camelquarkus

解决方案


推荐阅读