NoSuchMethodError:void com.mongodb.MongoClient。<init>迁移到较新的驱动程序版本时

问题描述 投票:0回答:1

我正在将使用 3.0 版本 mongo 驱动程序的 jar 迁移到 5.1。我使用的是java SE 11。在我的本地环境中,测试工作正常,但是在Web环境中,我收到以下错误:

java.lang.NoSuchMethodError:'void com.mongodb.MongoClient。< init >(java.util.List,java.util.List,com.mongodb.MongoClientOptions)' 在部署.VUCE.war//com.genexusconsulting.mongodb.GXCMongoDBConector.createClient(GXCMongoDBConector.java:811) 在部署.VUCE.war//com.genexusconsulting.mongodb.GXCMongoDBConector.connect(GXCMongoDBConector.java:106)

所引用的行具有以下代码:

    List<ServerAddress> seeds = new ArrayList<ServerAddress>();
    seeds.add(new ServerAddress(host, port));
    CodecRegistry codecRegistry = CodecRegistries.fromRegistries(CodecRegistries.fromProviders(new QueryResponseCodecProvider()), MongoClientSettings.getDefaultCodecRegistry());
    ConnectionString cnn = new ConnectionString(mongoUri);
    /* here there be error */
    MongoClientSettings options = MongoClientSettings.builder().
                    applyConnectionString(cnn).
                    applyToClusterSettings(builder -> builder.hosts(seeds)).
                    codecRegistry(codecRegistry).build();
    /* here there be error */

pom文件包括:

<!-- https://mvnrepository.com/artifact/org.mongodb/bson -->
<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>bson</artifactId>
    <version>5.1.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mongodb/mongodb-driver-core -->
<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongodb-driver-core</artifactId>
    <version>5.1.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mongodb/mongodb-driver-sync -->
<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongodb-driver-sync</artifactId>
    <version>5.1.2</version>
</dependency>

为此,我在 lib 文件夹中包含的文件是:bson-5.1.2.jar、bson-record-codec-5.1.2、mongodb-driver-core-5.1.2.jar 和 mongodb-driver-sync -5.1.2.jar,同时还删除所有以前的版本。该代码在我的本地测试中运行良好,但当我将其包含在测试环境中时,它会失败。

java mongodb
1个回答
0
投票

我会尽力帮助你,因为我看到你还没有得到任何帮助。希望对大家有帮助。

我想说的第一件事是检查你是否需要对代码进行更改(link:当前版本中连接 mongoDB 的方式),因为你已经更新了驱动版本(有时本地测试不够好)全面测试您的代码,也许您遗漏了一些重要的内容)。这里有一个链接,以防某些内容被弃用。例如,我在您已通过

com.mongodb.MongoClient
的异常中看到以下内容,现在是
com.mongodb.client.MongoClient
。所以看起来你的代码仍然兼容 3.X 版本而不是 5.X 版本。

注意:使用命令

mvn dependency:tree
link),您可以查看项目的依赖关系树,并确保是否有任何库引入了任何旧版本。

© www.soinside.com 2019 - 2024. All rights reserved.