IntelliJ IDEA中具有Maven的Java:如何正确导入依赖项

时间:2019-05-03 14:36:22

标签: java maven intellij-idea

我似乎无法导入我添加的任何依赖项。在下面的代码(pom.xml)中,我们看到了有效的JavaFX依赖项以及我自己添加但不起作用的MongoDB依赖项。

<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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.jonathan.woollettlight</groupId>
    <artifactId>CS-235 A3</artifactId>
    <version>1.0-SNAPSHOT</version>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-controls</artifactId>
            <version>12.0.1</version>
        </dependency>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-fxml</artifactId>
            <version>12.0.1</version>
        </dependency>
        <dependency>
            <groupId>org.mongodb</groupId>
            <artifactId>mongodb-driver-sync</artifactId>
            <version>3.10.1</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <release>11</release>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.openjfx</groupId>
                <artifactId>javafx-maven-plugin</artifactId>
                <version>0.0.1</version>
                <configuration>
                    <mainClass>com.jonathan.woollettlight.App</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

有效的JavaFX import语句:

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
import java.io.IOException;

这些无效。

import org.mongodb.*;
import org.bson.*;
import com.mongodb.*;

import org.bson.*;给出错误:Package 'org.bson' is declared in module 'org.mongodb.bson', but module 'com.jonathan.woollettlight' does not read it。然后import com.mongodb.*;给出Package 'com.mongodb' is declared in module 'org.mongodb.driver.sync.client', but module 'com.jonathan.woollettlight' does not read it

我的文件结构:

enter image description here

扩展了MongoDB的外部依赖关系。

enter image description here

我尝试了其他依赖项,甚至都跟随了该视频(https://www.youtube.com/watch?v=NP6AnvZ0CTA),但没有效果。我无法对已添加工作的依赖项做出任何import声明。

我应该注意该项目最初是通过Maven JavaFX原型创建的。  要添加原型,请使用groupId org.openjfx,artifactId javafx-maven-archetypes和版本0.0.1

我不知所措,将不胜感激。 如果您很好奇/很好(https://drive.google.com/file/d/1WKNg1G81dpOhrtO9W3OyRkL-rv10fbvO/view?usp=sharing),请链接到在Google云端硬盘上上传的项目

2 个答案:

答案 0 :(得分:1)

我刚刚下载了您的项目,我看到module-info.java仅包含javafx。*要求。

requires javafx.controls;
requires javafx.fxml;

尝试添加您应该能够导入的org.mongodb.bson,或者可以删除module-info.java文件进行测试。

我尝试删除用于测试的module-info.java并添加了requires语句,我能够添加诸如import org.bson.*;之类的import语句。 我也在使用intellij IDE。

module-info.java

module-info.java

App.java

App.java

答案 1 :(得分:0)

首先,请确保您添加的依赖项确实可以被maven访问,即使没有IDE也是如此: 只需运行类似mvn package的内容,即可看到maven下载了依赖项

现在,如果通过打开pom.xml将项目导入到构想中,则intelliJ应该基于pom.xml中找到的信息来构建其内部数据

因此以下内容可能会有所帮助:

Maven->“重新导入所有Maven项目” -这将触发同步过程

设置->构建,执行,部署->构建工具-> Maven :Maven主目录-intellij可能配置了与您认为不同的Maven(与ide捆绑在一起) 。您的Maven可能已预先配置了一些自定义属性,代理,凭据等)

文件->关闭项目,然后再次打开它,当然,打开pom.xml(仅当上述两项没有帮助时)。如果智能由于某种原因陷入内部数据结构与pom.xml中数据的同步问题,这对我来说已经发生了两次,因此可以解决这种情况。