无法访问 com.mongodb.MongoClientSettings - MongoDB Java 驱动程序 3.7+ [英] Cannot access com.mongodb.MongoClientSettings - MongoDB Java driver 3.7+

查看:69
本文介绍了无法访问 com.mongodb.MongoClientSettings - MongoDB Java 驱动程序 3.7+的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在遵循 指南 使用 MongoDB Java 驱动程序 3.7+ 版本和 Spring boot starter 作为依赖项.我得到了错误:

I'm following the guide using MongoDB Java driver 3.7+ versions with Spring boot starter as dependency. And I get the error:

java: cannot access com.mongodb.MongoClientSettings class file for 
com.mongodb.MongoClientSettings not found

我的 POM 文件如下所示:

My POM file looks like:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>bot</groupId>
    <artifactId>maven-bot</artifactId>
    <version>1.0-SNAPSHOT</version>

   <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.0.RELEASE</version>
    </parent>

    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <org.springframework.data.version>1.11.0.RELEASE</org.springframework.data.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        </dependency>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-jpa</artifactId>
            <version>${org.springframework.data.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.5</version>
        </dependency>
        <dependency>
            <groupId>org.mongodb</groupId>
            <artifactId>mongodb-driver-sync</artifactId>
            <version>3.10.0</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>

            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>lib/</classpathPrefix>
                            <mainClass>project.Main</mainClass>
                        </manifest>
                    </archive>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

我的类实体就像:

import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

@Data
@Document(collection = "messages")
public class Messages {

    @Id
    private Integer user_id;
    private String message;

    public Messages(String message) {
            this.message = message;
        }
    }

用于分页的存储库接口:

Repository interface for pagination:

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.repository.MongoRepository;

public interface Repository  extends MongoRepository<Messages, String> {
    Page<Messages> findByMessages(String message, Pageable pageable);
}

经过分析和测试,我了解到这个错误是由于依赖spring boot starter和更新版本的mongodb java driver 3.7+之间的冲突造成的:

After analyzing and testing, I understand this error appears because of conflict between of dependencies spring boot starter and newer versions of mongodb java driver 3.7+ :

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.0.RELEASE</version>
</parent>

如果我删除此 parent 依赖项,那么 MongoDB Java 驱动程序就一切正常.但我需要使用接口和类的注释.

If I delete this parent dependency then everything is good with MongoDB Java driver. But I need it using annotations for interface and class.

我试图通过显式编写Mongoclient来解决这个错误:

I tried to solve this error writting explicitly Mongoclient:

com.mongodb.client.MongoClient mongoClient = MongoClients.create("mongodb+srv://admin:password@cluster0-ox90k.mongodb.net/test?retryWrites=true");

代替:

MongoClient mongoClient = MongoClients.create("mongodb+srv://admin:password@cluster0-ox90k.mongodb.net/test?retryWrites=true");

但这并不能帮助我避免这个问题.

But it doesn't help me to avoid the issue.

我还通过命令检查:mvn dependency:resolve 它如何解析存储库中的所有项目依赖项,我得到:

Also I checked via command: mvn dependency:resolve how it resolves all the project dependencies from the repository, I get:

Build success.

谁能告诉我,如何使用较新的 MongoDB Java 驱动程序正确解决此问题?谢谢.

Can someone tell me, please, how to solve this problem correctly using newer MongoDB Java drivers? Thanks.

推荐答案

问题已通过在 POM 文件中添加更新版本的 spring boot starter 解决:

The issue was solved by adding newer version spring boot starter in POM file:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.4.RELEASE</version>
</parent>

因此,我强烈建议使用最新版本的驱动程序和 spring boot starter 依赖项.它应该可以避免此类错误.

So, I highly recommend to use last versions of drivers and spring boot starter dependencies. And it should save you from such errors.

但您也可以使用旧版本的 mongodb java 驱动程序来避免它.

But also you can avoid it using older versions of mongodb java drivers.

这篇关于无法访问 com.mongodb.MongoClientSettings - MongoDB Java 驱动程序 3.7+的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆