试图找出 `mongodb-driver-sync v 4.6.0` 和 `mongo-java-driver v 3.12.10` 之间的区别
Trying to figure out differences between `mongodb-driver-sync v 4.6.0` and `mongo-java-driver v 3.12.10`
我们在 Clojure 项目中使用 CongoMongo 工具包:
https://github.com/congomongo/congomongo
这取决于遗留 Java 驱动程序(在 project.clj 中):
[org.mongodb/mongo-java-driver "3.12.10"]
我现在正在尝试推出我自己的 Clojure 包装器,因为我们需要升级到现代 API。它引用:
[org.mongodb/mongodb-driver-sync "4.6.0"]
将两者都包含在我们的项目中导致了冲突:
Syntax error (IllegalAccessError) compiling at (/tmp/form-init13152456523068551352.clj:1:74).
failed to access class com.mongodb.client.internal.MongoClientDelegate from class com.mongodb.Mongo (com.mongodb.client.internal.MongoClientDelegate and com.mongodb.Mongo are in unnamed module of loader 'app')
然后我更改了包装器以使用相同的 3.12.10 驱动程序。现在一切正常。 CongoMongo 使用旧版驱动程序,我的包装器使用现代驱动程序,并且没有冲突。
这是预期的行为吗? mongo-java-driver 是否包括旧版驱动程序和现代驱动程序?或者我应该注意什么区别?
是的,3.x 系列驱动程序包含传统 API 和现代 API,但 4.x 系列仅包含现代 API .
您可以通过查看 JAR 文件来了解这一点:
(! 802)-> jar tvf ~/.m2/repository/org/mongodb/mongodb-driver-sync/4.6.0/mongodb-driver-sync-4.6.0.jar|fgrep ClientOptions
(! 803)-> jar tvf ~/.m2/repository/org/mongodb/mongodb-driver-core/4.6.0/mongodb-driver-core-4.6.0.jar|fgrep ClientOptions
(! 804)-> jar tvf ~/.m2/repository/org/mongodb/mongo-java-driver/3.12.0/mongo-java-driver-3.12.0.jar|fgrep ClientOptions
20111 Tue Dec 10 09:49:24 PST 2019 com/mongodb/MongoClientOptions.class
226 Tue Dec 10 09:49:24 PST 2019 com/mongodb/MongoClientOptions.class
18642 Tue Dec 10 09:49:24 PST 2019 com/mongodb/MongoClientOptions$Builder.class
(! 805)-> jar tvf ~/.m2/repository/org/mongodb/mongodb-driver-sync/4.6.0/mongodb-driver-sync-4.6.0.jar|fgrep ClientSetting
(! 806)-> jar tvf ~/.m2/repository/org/mongodb/mongodb-driver-core/4.6.0/mongodb-driver-core-4.6.0.jar|fgrep ClientSetting
229 Mon Apr 18 23:54:24 PDT 2022 com/mongodb/MongoClientSettings.class
16809 Mon Apr 18 23:54:24 PDT 2022 com/mongodb/MongoClientSettings$Builder.class
12947 Mon Apr 18 23:54:24 PDT 2022 com/mongodb/MongoClientSettings.class
(! 807)-> jar tvf ~/.m2/repository/org/mongodb/mongo-java-driver/3.12.0/mongo-java-driver-3.12.0.jar|fgrep ClientSetting
229 Tue Dec 10 09:49:24 PST 2019 com/mongodb/MongoClientSettings.class
9292 Tue Dec 10 09:49:24 PST 2019 com/mongodb/MongoClientSettings.class
14842 Tue Dec 10 09:49:24 PST 2019 com/mongodb/MongoClientSettings$Builder.class
MongoClientOptions
是传统 API 的一部分,MongoClientSettings
是现代 API 的一部分。
我们在 Clojure 项目中使用 CongoMongo 工具包:
https://github.com/congomongo/congomongo
这取决于遗留 Java 驱动程序(在 project.clj 中):
[org.mongodb/mongo-java-driver "3.12.10"]
我现在正在尝试推出我自己的 Clojure 包装器,因为我们需要升级到现代 API。它引用:
[org.mongodb/mongodb-driver-sync "4.6.0"]
将两者都包含在我们的项目中导致了冲突:
Syntax error (IllegalAccessError) compiling at (/tmp/form-init13152456523068551352.clj:1:74).
failed to access class com.mongodb.client.internal.MongoClientDelegate from class com.mongodb.Mongo (com.mongodb.client.internal.MongoClientDelegate and com.mongodb.Mongo are in unnamed module of loader 'app')
然后我更改了包装器以使用相同的 3.12.10 驱动程序。现在一切正常。 CongoMongo 使用旧版驱动程序,我的包装器使用现代驱动程序,并且没有冲突。
这是预期的行为吗? mongo-java-driver 是否包括旧版驱动程序和现代驱动程序?或者我应该注意什么区别?
是的,3.x 系列驱动程序包含传统 API 和现代 API,但 4.x 系列仅包含现代 API .
您可以通过查看 JAR 文件来了解这一点:
(! 802)-> jar tvf ~/.m2/repository/org/mongodb/mongodb-driver-sync/4.6.0/mongodb-driver-sync-4.6.0.jar|fgrep ClientOptions
(! 803)-> jar tvf ~/.m2/repository/org/mongodb/mongodb-driver-core/4.6.0/mongodb-driver-core-4.6.0.jar|fgrep ClientOptions
(! 804)-> jar tvf ~/.m2/repository/org/mongodb/mongo-java-driver/3.12.0/mongo-java-driver-3.12.0.jar|fgrep ClientOptions
20111 Tue Dec 10 09:49:24 PST 2019 com/mongodb/MongoClientOptions.class
226 Tue Dec 10 09:49:24 PST 2019 com/mongodb/MongoClientOptions.class
18642 Tue Dec 10 09:49:24 PST 2019 com/mongodb/MongoClientOptions$Builder.class
(! 805)-> jar tvf ~/.m2/repository/org/mongodb/mongodb-driver-sync/4.6.0/mongodb-driver-sync-4.6.0.jar|fgrep ClientSetting
(! 806)-> jar tvf ~/.m2/repository/org/mongodb/mongodb-driver-core/4.6.0/mongodb-driver-core-4.6.0.jar|fgrep ClientSetting
229 Mon Apr 18 23:54:24 PDT 2022 com/mongodb/MongoClientSettings.class
16809 Mon Apr 18 23:54:24 PDT 2022 com/mongodb/MongoClientSettings$Builder.class
12947 Mon Apr 18 23:54:24 PDT 2022 com/mongodb/MongoClientSettings.class
(! 807)-> jar tvf ~/.m2/repository/org/mongodb/mongo-java-driver/3.12.0/mongo-java-driver-3.12.0.jar|fgrep ClientSetting
229 Tue Dec 10 09:49:24 PST 2019 com/mongodb/MongoClientSettings.class
9292 Tue Dec 10 09:49:24 PST 2019 com/mongodb/MongoClientSettings.class
14842 Tue Dec 10 09:49:24 PST 2019 com/mongodb/MongoClientSettings$Builder.class
MongoClientOptions
是传统 API 的一部分,MongoClientSettings
是现代 API 的一部分。