首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Quarkus应用程序无法为MongoDB客户端找到编解码器

Quarkus应用程序无法为MongoDB客户端找到编解码器
EN

Stack Overflow用户
提问于 2021-11-12 02:37:28
回答 1查看 216关注 0票数 0

使用MongoDB (Panache)运行夸克应用程序会显示启动时的警告,例如:

代码语言:javascript
复制
WARN  [io.qua.mon.run.MongoClients] (main) Unable to load the property codec provider class org.bson.codecs.pojo.EnumPropertyCodecProvider: java.lang.NoSuchMethodException: org.bson.codecs.pojo.EnumPropertyCodecProvider.<init>()
    at java.base/java.lang.Class.getConstructor0(Class.java:3349)
    at java.base/java.lang.Class.getConstructor(Class.java:2151)
    at io.quarkus.mongodb.runtime.MongoClients.getPropertyCodecProviders(MongoClients.java:440)
    at io.quarkus.mongodb.runtime.MongoClients.configureCodecRegistry(MongoClients.java:332)
    at io.quarkus.mongodb.runtime.MongoClients.createMongoConfiguration(MongoClients.java:255)
    at io.quarkus.mongodb.runtime.MongoClients.createReactiveMongoClient(MongoClients.java:115)
    at io.quarkus.mongodb.runtime.MongoClientRecorder.reactiveMongoClientSupplier(MongoClientRecorder.java:57)
    at io.quarkus.deployment.steps.MongoClientProcessor$generateClientBeans-1756432087.deploy_0(MongoClientProcessor$generateClientBeans-1756432087.zig:96)
    at io.quarkus.deployment.steps.MongoClientProcessor$generateClientBeans-1756432087.deploy(MongoClientProcessor$generateClientBeans-1756432087.zig:40)
    at io.quarkus.runner.ApplicationImpl.doStart(ApplicationImpl.zig:666)
    at io.quarkus.runtime.Application.start(Application.java:101)
    at io.quarkus.runtime.ApplicationLifecycleManager.run(ApplicationLifecycleManager.java:101)
    at io.quarkus.runtime.Quarkus.run(Quarkus.java:66)
    at io.quarkus.runtime.Quarkus.run(Quarkus.java:42)
    at io.quarkus.runtime.Quarkus.run(Quarkus.java:119)
    at io.quarkus.runner.GeneratedMain.main(GeneratedMain.zig:29)

然后执行从数据库获取数据的操作(例如,查找)。在类似于此的循环中生成StackOverflow异常:

代码语言:javascript
复制
    at org.bson.internal.LazyCodec.encode(LazyCodec.java:38)
    at org.bson.BsonDocumentWrapper.getUnwrapped(BsonDocumentWrapper.java:195)
    at org.bson.BsonDocumentWrapper.entrySet(BsonDocumentWrapper.java:165)
    at org.bson.codecs.BsonDocumentCodec.encode(BsonDocumentCodec.java:112)
    at org.bson.codecs.BsonDocumentCodec.encode(BsonDocumentCodec.java:42)
    at org.bson.codecs.BsonCodec.encode(BsonCodec.java:55)
    at org.bson.codecs.BsonCodec.encode(BsonCodec.java:33)
    at org.bson.internal.LazyCodec.encode(LazyCodec.java:38)
    at org.bson.BsonDocumentWrapper.getUnwrapped(BsonDocumentWrapper.java:195)
    at org.bson.BsonDocumentWrapper.entrySet(BsonDocumentWrapper.java:165)
    at org.bson.codecs.BsonDocumentCodec.encode(BsonDocumentCodec.java:112)
    at org.bson.codecs.BsonDocumentCodec.encode(BsonDocumentCodec.java:42)

映射的对象包含一个ObjectId标识符。这些bean是在一个单独的项目中定义的,有一个jandex插件来对bean进行索引。

直接在项目POM文件上定义的Quarkus依赖项是:

代码语言:javascript
复制
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-arc</artifactId>
    </dependency>
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-mongodb-panache</artifactId>
    </dependency>
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-resteasy</artifactId>
    </dependency>
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-rest-client</artifactId>
    </dependency>
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-smallrye-fault-tolerance</artifactId>
    </dependency>
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-resteasy-jackson</artifactId>
    </dependency>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-12 22:47:39

我发现了问题。错误地,bson库被添加到了jandex索引中。

将其从索引中删除将解决此问题。

在我们的例子中,它是在应用程序属性上声明的:

代码语言:javascript
复制
quarkus.index-dependency.bson.group-id=org.mongodb
quarkus.index-dependency.bson.artifact-id=bson

我删除了这些行,这个项目可以工作,但是我们看到了一个编译警告。

代码语言:javascript
复制
[WARNING] [io.quarkus.deployment.steps.ReflectiveHierarchyStep] Unable to properly register the hierarchy of the following classes for reflection as they are not in the Jandex index:
    - org.bson.types.ObjectId (source: RestClientProcessor > com.saaskun.api...)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69937311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档