Java Maven在IntelliJ中找不到依赖项
我是Maven新手,不太清楚它的用途,但我认为它是用于导入外部库,以便在编码时可以使用它们。我已经导入了依赖项,从这里可以看出没有错误: 但是当输入导入时,它会显示为红色,好像找不到一样。它什么也没找到 如果我粘贴整个导入行,它会自动删除 这不是Maven应该做的吗?或者在它工作之前还有其他事情要做吗?我还将其设置为自动导入Maven项目 编辑:为了清楚起见,它当然在我的Java Maven在IntelliJ中找不到依赖项,java,maven,javafx,dependencies,maven-plugin,Java,Maven,Javafx,Dependencies,Maven Plugin,我是Maven新手,不太清楚它的用途,但我认为它是用于导入外部库,以便在编码时可以使用它们。我已经导入了依赖项,从这里可以看出没有错误: 但是当输入导入时,它会显示为红色,好像找不到一样。它什么也没找到 如果我粘贴整个导入行,它会自动删除 这不是Maven应该做的吗?或者在它工作之前还有其他事情要做吗?我还将其设置为自动导入Maven项目 编辑:为了清楚起见,它当然在我的pom.xml文件中,否则它不会显示在上面屏幕截图中的外部库中: <dependencies> <
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>
org.openjfx
似乎这种特殊的依赖关系是按模块化的。因此,我们需要模块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仍然不知道为什么,因为它是默认项目。我使用了标准的默认项目,所以这就是为什么没有人知道它会是这样的?很奇怪。