Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Maven在IntelliJ中找不到依赖项_Java_Maven_Javafx_Dependencies_Maven Plugin - Fatal编程技术网

Java Maven在IntelliJ中找不到依赖项

Java Maven在IntelliJ中找不到依赖项,java,maven,javafx,dependencies,maven-plugin,Java,Maven,Javafx,Dependencies,Maven Plugin,我是Maven新手,不太清楚它的用途,但我认为它是用于导入外部库,以便在编码时可以使用它们。我已经导入了依赖项,从这里可以看出没有错误: 但是当输入导入时,它会显示为红色,好像找不到一样。它什么也没找到 如果我粘贴整个导入行,它会自动删除 这不是Maven应该做的吗?或者在它工作之前还有其他事情要做吗?我还将其设置为自动导入Maven项目 编辑:为了清楚起见,它当然在我的pom.xml文件中,否则它不会显示在上面屏幕截图中的外部库中: <dependencies> <

我是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>

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仍然不知道为什么,因为它是默认项目。我使用了标准的默认项目,所以这就是为什么没有人知道它会是这样的?很奇怪。