【问题标题】:import com.mongodb.MongoClient isn't recognize by intellij IDEA 2018.1.6intellij IDEA 2018.1.6 无法识别 import com.mongodb.MongoClient
【发布时间】:2019-04-27 13:40:03
【问题描述】:

我正在尝试创建一个项目,在该项目中我将能够通过我的控制器访问 mongo db 并从用户那里获取表单。

在我的 pom 文件中,我已向 mongodb-driver 声明,但是当我尝试 `import com.mongodb.MongoClient 时出现错误 - 无法解析符号 mongodb

我正在尝试将mongodb java驱动程序与spring boot一起使用,因为我在M101J课程中研究过如何使用。

pom - 这是文件 -

    <?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>
    <artifactId>form-java-spring-freemarker</artifactId>
    <name>form-java-spring-freemarker</name>
    <description>form-java-spring-freemarker</description>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.5.RELEASE</version>
    </parent>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.mongodb</groupId>
            <artifactId>mongodb-driver-sync</artifactId>
            <version>3.9.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
        </dependency>

    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

另一个文件——User.java——

    package com.hellokoding.springboot;
import com.mongodb.MongoClient;

public class User {
    private String firstName;
    private String lastName;

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
}

文件树 -

【问题讨论】:

  • Argh 原来是 org 的遗产!显示我多么费心查看包名称。你确定你已经更新了所有项目依赖项吗?通常这种事情通常意味着 maven 还没有取消在 pom 中所做的更改。 IntelliiJ 可能会提示您打开自动更新,但您可能错过了该消息。您可以从菜单中启用自动更新。
  • 运行mvn dependency:resolve然后再试一次。
  • @EugenCovaci 很奇怪。两者都做了,仍然没有运气。 Intellij 甚至告诉我“构建成功”
  • 好的!我已将 mongodb 驱动程序版本降级为 3.6.4 并且可以正常工作。谢谢你们!
  • Assaf,实际上,这是一个非常有趣的错误。我有 java: cannot access com.mongodb.MongoClientSettings class file for com.mongodb.MongoClientSettings not found issue 因为 spring-boot-starter-parent 依赖。如果我删除它,那么我对 mongo java 驱动程序较新版本没有任何警告。所以我认为这是由于库 spring boot starter 和 mongo newer driver 3.7+ 版本之间的冲突而发生的。或者像你做的那样使用像 3.4/3.6 这样的旧版本。

标签: java mongodb spring-mvc intellij-idea


【解决方案1】:

正如我所料,我也有issue,因为新版本的 mongodb 驱动程序 3.7+ 和 spring boot 启动器依赖项之间存在冲突,正如我在 cmets 中提到的那样。并通过添加而不是解决它

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

较新的版本如:

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

因此,我强烈建议使用最新版本的驱动程序和 Spring Boot 启动器依赖项。我敢肯定,它应该可以帮助您避免此类错误。

但您也可以像以前那样使用旧版本的 mongodb java 驱动程序来避免它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-04
    • 2017-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多