Java lang nosuchmethoderror com mongodb kết nối nội bộ defaultclusterfactory createcluster

java. lang thang. NoSuchMethodLỗi. com. mongodb. sự liên quan. Mặc địnhClusterFactory. tạo (Lcom/mongodb/connection/ClusterSettings;Lcom/mongodb/connection/ServerSettings;Lcom/mongodb/connection/ConnectionPoolSettings;Lcom/mongodb/connection/StreamFactory;Lcom/mongodb/connection/StreamFactory;Ljava/util/List;Lcom/

tại com. mongodb. Mông Cổ. tạoCluster(Mongo. java. 744)
tại com. mongodb. Mông Cổ. tạoCluster(Mongo. java. 728)
tại com. mongodb. Mông Cổ. (tiếng Mông Cổ. java. 293)
tại com. mongodb. Mông Cổ. (tiếng Mông Cổ. java. 288)
tại com. mongodb. Mông Cổ. (tiếng Mông Cổ. java. 284)
tại com. mongodb. MongoClient. (MongoClient. java. 179)
tại com. mongodb. MongoClient. (MongoClient. java. 156)
tại com. mongodb. MongoClient. (MongoClient. java. 146)
tại com. baizhi. Ứng dụng. getConnection(Ứng dụng. java. 17)
lúc nắng. phản ánh. NativeMethodAccessorImpl. gọi0 (Phương thức gốc)
lúc nắng. phản ánh. NativeMethodAccessorImpl. gọi (NativeMethodAccessorImpl. java. 62)
lúc nắng. phản ánh. DelegatingMethodAccessorImpl. gọi (DelegatingMethodAccessorImpl. java. 43)
tại java. lang thang. phản ánh. Phương pháp. gọi (Phương thức. java. 498)
tại tổ chức. quân đội. người chạy. người mẫu. FrameworkMethod$1. runReflectiveCall(FrameworkMethod. java. 50)
tại tổ chức. quân đội. nội bộ. người chạy. người mẫu. Phản chiếu Có thể gọi được. chạy (ReflectiveCallable. java. 12)
tại tổ chức. quân đội. người chạy. người mẫu. Phương pháp khung. InvokeExplosively(FrameworkMethod. java. 47)
tại tổ chức. quân đội. nội bộ. người chạy. các câu lệnh. Chạy trước. đánh giá (Run Befores. java. 24)
tại tổ chức. quân đội. người chạy. ParentRunner. runLeaf(ParentRunner. java. 325)
tại tổ chức. quân đội. người chạy. BlockJUnit4ClassRunner. runChild(BlockJUnit4ClassRunner. java. 78)
tại tổ chức. quân đội. người chạy. BlockJUnit4ClassRunner. runChild(BlockJUnit4ClassRunner. java. 57)
tại tổ chức. quân đội. người chạy. ParentRunner$3. run(ParentRunner. java. 290)
tại tổ chức. quân đội. người chạy. ParentRunner$1. lịch trình (ParentRunner. java. 71)
tại tổ chức. quân đội. người chạy. ParentRunner. runChildren(ParentRunner. java. 288)
tại tổ chức. quân đội. người chạy. ParentRunner. truy cập$000(ParentRunner. java. 58)
tại tổ chức. quân đội. người chạy. ParentRunner$2. đánh giá (ParentRunner. java. 268)
tại tổ chức. quân đội. người chạy. ParentRunner. run(ParentRunner. java. 363)
tại tổ chức. quân đội. người chạy. JUnitCore. chạy (JUnitCore. java. 137)
tại com. intellij. tháng 6. JUnit4IdeaTestRunner. startRunnerWithArgs(JUnit4IdeaTestRunner. java. 68)
tại com. intellij. rt. chấp hành. quân đội. IdeaTestRunner$Repeater. startRunnerWithArgs(IdeaTestRunner. java. 47)
tại com. intellij. rt. chấp hành. quân đội. JUnitStarter. chuẩn bịStreamsAndStart(JUnitStarter. java. 242)
tại com. intellij. rt. chấp hành. quân đội. JUnitStarter. chính (JUnitStarter. java. 70)

最后发现是和Springboot的版本有关系,原来的版本是

    org.springframework.boot
    spring-boot-starter-parent
    2.1.4.RELEASE
     

改成

    org.springframework.boot
    spring-boot-starter-parent
    1.5.8.RELEASE
     

即可!

Tôi đang cố tạo một ứng dụng đơn giản xử lý cơ sở dữ liệu MongoDB bằng MongoTemplate. Tuy nhiên, phương pháp này

    @Bean
    public MongoTemplate mongoTemplate() throws Exception {
        MongoTemplate template = new MongoTemplate(mongoClient(), this.mongodbName);
        return template;
    }

thất bại với ngoại lệ này

Error creating bean with name 'mongoTemplate' defined in class path resource [com/myapp/tryout/repository/config/MongoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.mongodb.core.MongoTemplate]: Factory method 'mongoTemplate' threw exception; nested exception is java.lang.NoSuchMethodError: 'java.lang.String com.mongodb.connection.ClusterSettings.getDescription()'

quả bông. xml có các phụ thuộc này

    
      org.springframework.data
      spring-data-mongodb
      3.0.1.RELEASE
    

    
      org.mongodb
      mongo-java-driver
      3.12.5
    

Phiên bản mùa xuân là 5. 2. 6. Tài liệu của com này. mongodb. sự liên quan. ClusterSettings cho biết rằng phương thức được đề cập thực sự không được dùng nữa. Ngoài ra, bằng cách tìm trong lớp ClusterSettings, tôi không thể tìm thấy phương thức này

Câu hỏi của tôi là. Có phải đó là sự không phù hợp trong các bản phát hành hiện tại của Spring và mongo-java-driver?

Xin hỏi, nếu bạn cần thêm thông tin. Tôi sẽ sẵn sàng cung cấp nó

THÊM. À, thật trớ trêu. tôi đã tìm thấy cái này

    private static Cluster createCluster(final MongoClientSettings settings,
                                         @Nullable final MongoDriverInformation mongoDriverInformation) {
        notNull("settings", settings);
        List credentialList = settings.getCredential() != null ? singletonList(settings.getCredential())
                : Collections.emptyList();
        return new DefaultClusterFactory().createCluster(settings.getClusterSettings(), settings.getServerSettings(),
                settings.getConnectionPoolSettings(), getStreamFactory(settings, false), getStreamFactory(settings, true), credentialList,
                getCommandListener(settings.getCommandListeners()), settings.getApplicationName(), mongoDriverInformation,
                settings.getCompressorList());
    }

trong com. mongodb. khách hàng. nội bộ. MongoClientImpl

Và cái này

    public Cluster createCluster(final ClusterSettings clusterSettings, final ServerSettings serverSettings,
                                 final ConnectionPoolSettings connectionPoolSettings, final StreamFactory streamFactory,
                                 final StreamFactory heartbeatStreamFactory, final List credentialList,
                                 final CommandListener commandListener, final String applicationName,
                                 final MongoDriverInformation mongoDriverInformation,
                                 final List compressorList) {

        ClusterId clusterId = new ClusterId(clusterSettings.getDescription());

trong com. mongodb. sự liên quan. DefaultClusterFactory, không được dùng nữa

mùa xuân 3. x hỗ trợ mongodb java phiên bản 4. x. mongo-java-driver và mongodb-driver “uber-jars” không còn được xuất bản như đã lưu ý trong trang được liên kết. giữa 3. x và 4. phiên bản trình điều khiển x mongo java, các phụ thuộc uber jar đã được chia thành các phụ thuộc luồng lõi và đồng bộ hóa/phản ứng. Tôi đã có thể tái tạo vấn đề với 3. phiên bản x. Khi tôi cập nhật đúng 4. vấn đề phụ thuộc x biến mất

Vì vậy, các phụ thuộc chính xác theo thứ tự dưới đây


  org.springframework.data
  spring-data-mongodb
  3.0.1.RELEASE



  org.mongodb
  mongodb-driver-core
  4.0.4



  org.mongodb
  mongodb-driver-sync
  4.0.4

https. //mongodb. github. io/mongo-java-driver/4. 0/upgrading/#upgrading-from-the-3-12-java-driver https. // tài liệu. mùa xuân. io/spring-data/mongodb/docs/current/reference/html/#upgrading. 2-3

Làm cách nào để sử dụng MongoClient trong Java?

Kết nối với Java . instantiate a MongoClient by passing a MongoDB Atlas connection string into the MongoClients. phương thức tĩnh tạo (). Điều này sẽ thiết lập kết nối với MongoDB Atlas bằng chuỗi kết nối.

Di sản trình điều khiển MongoDB là gì?

“Trình điều khiển MongoDB Legacy mongodb-driver-legacy là trình điều khiển Java đồng bộ kế thừa có điểm vào là com. mongodb. MongoClient và các lớp trung tâm bao gồm com. mongodb. DB, com.