Java с Maven в IntelliJ IDEA: как правильно импортировать зависимость - PullRequest
1 голос
/ 03 мая 2019

Я не могу импортировать какие-либо из моих добавленных зависимостей.В следующем коде (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 itimport 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.

Я в недоумении относительно того, что делать здесь, любая помощь будет принята с благодарностью. Ссылка на проект, загруженный на диск Google, если вам это интересно / приятно (https://drive.google.com/file/d/1WKNg1G81dpOhrtO9W3OyRkL-rv10fbvO/view?usp=sharing)

Ответы [ 2 ]

1 голос
/ 03 мая 2019

Я только что загрузил ваш проект и вижу, что module-info.java содержит только javafx. * Требуется.

requires javafx.controls;
requires javafx.fxml;

Попробуйте добавить org.mongodb.bson, который вы сможете импортировать, или вы можете удалить файл module-info.java для тестирования.

Я попытался удалить оба модуля: info.java для тестирования и добавления операторов requires, я смог добавить операторы импорта, такие как import org.bson.*;. Я также использую intellij IDE.

module-info.java

module-info.java

App.java

App.java

0 голосов
/ 03 мая 2019

Прежде всего, пожалуйста, убедитесь, что добавленная вами зависимость действительно доступна для maven, даже без IDE: просто запустите что-то вроде: mvn package, чтобы увидеть, что maven загружает зависимость

Теперь, если проект был импортирован в идею путем открытия pom.xml, intelliJ должен построить свои внутренние данные на основе информации, найденной в pom.xml

Таким образом, может помочь следующее:

Maven -> «Повторно импортировать все проекты Maven» - Это запустит процесс синхронизации

Настройки -> Сборка, выполнение, развертывание -> Инструменты сборки -> Maven : домашний каталог Maven - intellij может быть настроен с другим maven, чем вы думаете, что вы используете (имеет что-то в комплекте с ide). Ваш maven может быть предварительно настроен с некоторыми пользовательскими свойствами, прокси, учетными данными и т. Д.)

Файл -> Закрыть проект и затем откройте его снова, конечно, откройте pom.xml (только если два элемента выше не помогли). Это может исправить ситуацию, если по какой-то причине intelliJ столкнулся с проблемами синхронизации своих внутренних структур данных с данными из pom.xml, что случилось со мной пару раз, поэтому я упоминаю об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...