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 中找不到 Maven java-doc 插件
在 .ivy2 文件中找不到在线依赖,Intellij Idea 也没有找到
/hibernate.cfg.xml 在 Intellij 中找不到