首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Fongo 2.1.0不支持Mongo java驱动程序3.2.8

Fongo 2.1.0不支持Mongo java驱动程序3.2.8
EN

Stack Overflow用户
提问于 2018-12-18 14:19:14
回答 4查看 1.6K关注 0票数 1

我正在尝试将mongodb从3.x升级到4.x,因为我们需要在mongodb中有事务支持,还需要使用fongo for junit。我已经为以下给定的依赖项修改了版本:

代码语言:javascript
复制
<spring-data-mongodb-version>2.1.0.RELEASE</spring-data-mongodb-version>
<spring-data-commons-version>2.1.0.RELEASE</spring-data-commons-version>
<spring-framework-version>5.0.8.RELEASE</spring-framework-version>
<mongo-java-driver>3.2.8</mongo-java-driver>
fongo -> 2.1.0

在给定的代码toTestConfig类下面添加:

代码语言:javascript
复制
private static final MongoClient createNewMongo() {
    Fongo fongo = new Fongo("fongo");
    MongoClient mongo = fongo.getMongo();
    return mongo;
  }
@Override
  @Bean
  public MongoTemplate mongoTemplate() throws Exception {
    Fongo fongo = new Fongo("fongo");
    MongoClient mongo = fongo.getMongo();
    return new MongoTemplate(mongo, DATABASE_NAME);
  }

  @Bean
  public MongoClient mongoClient() {
    MongoCredential mongoCredential = MongoCredential
        .createMongoCRCredential("ext-catalog", "ext-catalog",
            "ext-catalog".toCharArray());
    List<MongoCredential> credentialsList = new ArrayList<>();
    credentialsList.add(mongoCredential);

    ServerAddress serverAddress = null;
    try {
      serverAddress = new ServerAddress("localhost" , 27017 );
    } catch (Exception e) {
      e.printStackTrace();
    }
    return new MongoClient(serverAddress, credentialsList);
  }

正在获取以下给定错误:

代码语言:javascript
复制
java.lang.NoClassDefFoundError: com/mongodb/FongoMongoDatabase
    at com.mongodb.MockMongoClient.getDatabase(MockMongoClient.java:88) ~[fongo-2.1.0.jar:na]
    at org.springframework.data.mongodb.core.SimpleMongoDbFactory.doGetMongoDatabase(SimpleMongoDbFactory.java:105) ~[spring-data-mongodb-2.1.0.RELEASE.jar:2.1.0.RELEASE]
    at org.springframework.data.mongodb.core.MongoDbFactorySupport.getDb(MongoDbFactorySupport.java:107) ~[spring-data-mongodb-2.1.0.RELEASE.jar:2.1.0.RELEASE]
    at org.springframework.data.mongodb.core.MongoDbFactorySupport.getDb(MongoDbFactorySupport.java:95) ~[spring-data-mongodb-2.1.0.RELEASE.jar:2.1.0.RELEASE]
    at org.springframework.data.mongodb.MongoDatabaseUtils.doGetMongoDatabase(MongoDatabaseUtils.java:108) ~[spring-data-mongodb-2.1.0.RELEASE.jar:2.1.0.RELEASE]
    at org.springframework.data.mongodb.MongoDatabaseUtils.getDatabase(MongoDatabaseUtils.java:68) ~[spring-data-mongodb-2.1.0.RELEASE.jar:2.1.0.RELEASE]
    at org.springframework.data.mongodb.core.MongoTemplate.doGetDatabase(MongoTemplate.java:2235) ~[spring-data-mongodb-2.1.0.RELEASE.jar:2.1.0.RELEASE]
    at org.springframework.data.mongodb.core.MongoTemplate.execute(MongoTemplate.java:534) ~[spring-data-mongodb-2.1.0.RELEASE.jar:2.1.0.RELEASE]
    at org.springframework.data.mongodb.core.DefaultIndexOperations.execute(DefaultIndexOperations.java:218) ~[spring-data-mongodb-2.1.0.RELEASE.jar:2.1.0.RELEASE]
    at org.springframework.data.mongodb.core.DefaultIndexOperations.ensureIndex(DefaultIndexOperations.java:121) ~[spring-data-mongodb-2.1.0.RELEASE.jar:2.1.0.RELEASE]
    at org.springframework.data.mongodb.core.index.MongoPersistentEntityIndexCreator.createIndex(MongoPersistentEntityIndexCreator.java:145) ~[spring-data-mongodb-2.1.0.RELEASE.jar:2.1.0.RELEASE]

有没有办法解决这个问题?我找到一个链接,上面写着这两个不兼容。

EN

回答 4

Stack Overflow用户

发布于 2019-02-04 22:42:49

我认为目前最好的解决方案是改用mongo java服务器。

这就是我如何让测试与最新版本一起工作。

票数 1
EN

Stack Overflow用户

发布于 2019-03-05 14:59:09

我有一个在JDK 11和Spring2.1中运行的应用程序,它还使用Fongo模拟Mongo响应。

我的应用程序在下面的包组合下工作正常

使用com.github.fakemongo:fongo 2.2.0-RC1 (使用2.2.0-rc2时发现异常)

spring- Boot -dependencies 2.1.x ( Spring Boot 2.1带来了对Java 11的支持)

您需要覆盖Spring2.1中的一些依赖项,如下所示

  • spring-data-commons 2.0.8
  • spring-boot-starter-data-jpa 2.0.8
  • spring-data-jpa 2.0.8
  • spring-boot-starter-data-mongodb 2.0.8
  • spring-boot-test 2.0.8
  • spring-boot-test-autoconfigure 2.0.8
  • spring-boot-starter-test 2.0.8
  • spring-data-mongodb 2.0.13.Relase(Spring 2.0.8)
  • mongodb-driver-core 3.6.4
  • mongo-java-driver 3.6.4
  • mongodb-driver 3.6.4
  • org.mongodb:bson 3.6.4

中的一个依赖项

更重要的是,在pom.xml中定义上述依赖关系后,运行"clean dependency:tree“来查看您的应用程序OR模块是否获得了正确的包。

代码语言:javascript
复制
[INFO] +- org.springframework.boot:spring-boot-starter-data-mongodb:jar:2.0.8.RELEASE:compile
[INFO] |  +- org.mongodb:mongodb-driver:jar:3.6.4:compile
[INFO] |  |  +- org.mongodb:bson:jar:3.6.4:compile
[INFO] |  |  \- org.mongodb:mongodb-driver-core:jar:3.6.4:compile
票数 1
EN

Stack Overflow用户

发布于 2019-03-12 10:37:14

首先,如果你使用的是Spring Data 2.1.X,3.2.8看起来很旧,我会坚持使用spring-data-mongodb所依赖的版本。即使这样,Fongo也不能与新的mongo驱动程序兼容。有几个与此相关的开放问题:#316#337#357

上面的最后一期链接到了Fongo的fork,可能对你有用。或者您可以尝试将mongo驱动程序稍微降级到3.7,并使用fongo 2.2.0-RC1,它也可以根据相同的问题工作。但是,我不确定这是否与您的Spring Data版本兼容。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53827392

复制
相关文章

相似问题

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