【问题标题】:Maven not finding dependencies in IntelliJMaven 在 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 没有找到任何东西:

【问题讨论】:

    标签: java maven javafx dependencies maven-plugin


    【解决方案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 仍然不知道为什么,因为它是一个默认项目。我使用了标准的默认项目,所以这就是为什么没有人知道它会是这样的原因?很奇怪。
    猜你喜欢
    • 2015-10-12
    • 2018-07-13
    • 1970-01-01
    • 1970-01-01
    • 2016-10-01
    • 2020-04-18
    • 2019-12-22
    • 2018-11-03
    相关资源
    最近更新 更多