Maven 在 IntelliJ 中找不到依赖项

Posted

技术标签:

【中文标题】Maven 在 IntelliJ 中找不到依赖项【英文标题】:Maven not finding dependencies in IntelliJ 【发布时间】:2020-12-01 15:02:03 【问题描述】:

我是 Maven 新手,不太确定它的用途,但我认为它是用于导入外部库,以便在编码时可以使用它们。我已经导入了依赖项,并且没有错误,如下所示:

但是在输入导入时,它只是以红色显示,就好像它没有找到一样。它什么也没找到。

如果我将整个导入行粘贴进去,它会被自动删除。

这不是 Maven 应该做的,还是在它起作用之前还有其他事情要做?我也将它设置为自动导入 Maven 项目

编辑:为了清楚起见,它当然在我的pom.xml 文件中,否则它不会出现在上面屏幕截图中的外部库中:

<dependencies>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-controls</artifactId>
        <version>11</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-graphics</artifactId>
        <version>11</version>
    </dependency>
    <dependency>
        <groupId>uk.co.caprica</groupId>
        <artifactId>vlcj</artifactId>
        <version>4.5.0</version>
    </dependency>
    <dependency>
        <groupId>uk.co.caprica</groupId>
        <artifactId>vlcj-javafx</artifactId>
        <version>1.0.2</version>
    </dependency>
</dependencies>

附加编辑:一些屏幕截图显示直接键入类并不能更好地工作。 Intellij 没有找到任何东西:

【问题讨论】:

【参考方案1】:

似乎这个特殊的依赖是根据Java Platform Module System 模块化的。所以,我们需要在module-info.java 文件中的requires

module com.sample 
    requires javafx.controls;
    exports com.sample;
    requires transitive javafx.graphics;
    requires uk.co.caprica.vlcj;
    requires uk.co.caprica.vlcj.javafx;

在此之后,依赖项突然可见并且在代码中完全可用。

【讨论】:

"似乎这个特殊的依赖是模块化的"——只是想指出这不一定是重要的部分。重要的部分是 您的代码 是模块化的。您的模块必须为它使用的 每个 依赖项声明一个 requires 指令。即使依赖项不是正确的模块(即没有模块信息描述符),您的模块仍然需要 requires 它(因为它不是模块,所以它成为“自动模块”)。 @Slaw 因为它是一个默认的 JavaFX 项目,所以我认为它不会有什么奇怪的。我认为它必须与依赖关系有关,因为这是该项目唯一的独特之处。 可以理解。我的评论只是为了提供更多信息(为您或任何未来的读者)关于为什么您必须声明requires 指令。您是正确的,问题在于依赖关系;只是JPMS模块和依赖关系密切。 @Slaw 仍然不知道为什么,因为它是一个默认项目。我使用了标准的默认项目,所以这就是为什么没有人知道它会是这样的原因?很奇怪。

以上是关于Maven 在 IntelliJ 中找不到依赖项的主要内容,如果未能解决你的问题,请参考以下文章

在 IntelliJ IDE 中找不到 Maven 插件

在 IntelliJ 中找不到 Maven java-doc 插件

在 .ivy2 文件中找不到在线依赖,Intellij Idea 也没有找到

/hibernate.cfg.xml 在 Intellij 中找不到

在简单的 Maven 项目中找不到依赖 spring-boot-starter-security

Gradle在本地Maven存储库中找不到现有的依赖项