我正在尝试将 mongo-java-driver:3.12.14 升级到 mongodb-driver-sync:4.11.1。进行所有必要的更改并解决编译错误后,我遇到了 NoClassDefFoundError 的运行时问题。
Caused by: java.lang.NoClassDefFoundError: com/mongodb/internal/diagnostics/logging/Loggers
at com.mongodb.client.internal.MongoClientImpl.<clinit>(MongoClientImpl.java:66)
at com.mongodb.client.MongoClients.create(MongoClients.java:108)
at org.springframework.boot.autoconfigure.mongo.MongoClientFactorySupport.createMongoClient(MongoClientFactorySupport.java:50)
at org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration.mongo(MongoAutoConfiguration.java:56)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)
... 212 mofrom re
Caused by: java.lang.ClassNotFoundException: com.mongodb.internal.diagnostics.logging.Loggers
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
... 221 more
我已更新 gradle 文件如下:
dependency("org.mongodb:mongo-java-driver:3.12.14")
变成
dependency("org.mongodb:mongodb-driver-sync:4.11.1")
查看了 Mongo Sync 驱动程序 API 文档 https://www.mongodb.com/docs/drivers/java/sync/v4.11/compatibility/ 我没有看到任何参考
com.mongodb.internal.*
我建议阅读本文档以了解哪些内容已被弃用/删除。从 3.12 跳跃到 4.11 需要几年的演变,因此在如此广阔的范围内变化是不可避免的。