You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Groovy的JSR223采样器连接MongoDB时Maven执行报错

解决JMeter Groovy采样器连接MongoDB在Maven执行时的MissingMethodException问题

哎,这个问题我太熟了!十有八九是MongoDB驱动版本不一致搞的鬼——JMeter本身自带了一套MongoDB驱动,而你的Maven项目用的是另一个版本,两个版本里的方法签名或者存在性不一样,就导致Maven跑的时候找不到方法了。

咱们一步步来排查解决:

1. 先确认JMeter内置的MongoDB驱动版本

打开你本地JMeter安装目录下的lib文件夹,找名字类似mongo-java-driver-xxx.jar的文件(如果是MongoDB 4.x+版本,可能是mongodb-driver-sync-xxx.jar),记下后面的版本号,比如3.12.10或者4.11.1。

2. 让Maven项目对齐驱动版本

在你的pom.xml里添加或修改MongoDB驱动依赖,版本和JMeter内置的完全一致:

  • 如果是3.x版本的驱动:
    <dependency>
        <groupId>org.mongodb</groupId>
        <artifactId>mongo-java-driver</artifactId>
        <version>3.12.10</version> <!-- 替换成你JMeter里的实际版本 -->
    </dependency>
    
  • 如果是4.x+版本的驱动:
    <dependency>
        <groupId>org.mongodb</groupId>
        <artifactId>mongodb-driver-sync</artifactId>
        <version>4.11.1</version> <!-- 替换成你JMeter里的实际版本 -->
    </dependency>
    

3. 排查Maven依赖冲突

有时候其他依赖会偷偷引入不同版本的MongoDB驱动,导致版本混乱。用这个命令查看依赖树:

mvn dependency:tree

如果看到有其他依赖引入了不一致的MongoDB驱动,就把它排除掉,比如:

<dependency>
    <groupId>你的某个依赖</groupId>
    <artifactId>依赖名称</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.mongodb</groupId>
            <artifactId>mongo-java-driver</artifactId> <!-- 对应冲突的驱动artifactId -->
        </exclusion>
    </exclusions>
</dependency>

4. 适配不同版本的代码写法

如果你的Maven用的是4.x+的驱动,旧的MongoClient构造方法已经被弃用了,得换成新的写法,不然也会报错。把你的代码改成:

import com.mongodb.MongoCredential
import com.mongodb.ServerAddress
import com.mongodb.client.MongoClients
import com.mongodb.MongoClientSettings
import java.util.Arrays

MongoCredential mongoCredential = MongoCredential.createScramSha1Credential("PIDPCR","adm",'pRU6Ref'.toCharArray());
MongoClientSettings settings = MongoClientSettings.builder()
    .applyToClusterSettings { builder ->
        builder.hosts(Arrays.asList(new ServerAddress("${addr}", 27017)))
    }
    .credential(mongoCredential)
    .build();
coreMongoClient = MongoClients.create(settings);

核心思路就是:让JMeter和Maven环境用完全相同的MongoDB驱动版本,要么对齐版本,要么调整代码适配对应的版本,这样方法签名就不会不匹配了。

内容的提问来源于stack exchange,提问作者Jyotish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:33:57