13

我继承了一个 Spring Boot 项目,我们希望使用 Java 11 进行测试,因为 Java 9 和 10(var以及List.of(...))中添加了一些不错的功能。

Maven 项目分为几个部分,其中为 Java 8 设置生产代码,为 Java 11 设置测试代码。这在模块基础上单独运行良好,全局构建适用于 Java 8(测试失败除外编译)和Java 10。

现在我想使用 Java 11 从根目录编译所有内容,因为这是 LTS(Zulu,因为这是在 Windows 10 上),并且出于某种原因,Maven 现在想要引入 org.openjfx:javafx.base:jar:11.0。 0-快照

[INFO] Building mumble-data-service-parent 1.0.0-SNAPSHOT              
[1/8]
[INFO] --------------------------------[ pom ]---------------------------------
[WARNING] The POM for org.openjfx:javafx.base:jar:11.0.0-SNAPSHOT is missing, no dependency information available
[INFO]

由于不满足依赖关系,我不能(至少不是以我能想到的方式)让 Maven 告诉我原因要这样做,所以我不知道在哪里看,并且该项目似乎没有引用 javafx第一名(作为一个让我有点惊讶的 Spring Boot 微服务)。因此这个问题。

是什么原因造成的,我该如何解决?


正如 Karol 正确推断的那样,这个问题之前就出现过,解决方法是将休眠验证器依赖项升级到更新版本。我所需要的只是将以下属性添加到我的父 pom 中:

    <!-- needed for building with Java 11 -->
    <hibernate-validator.version>6.0.12.Final</hibernate-validator.version>
4

2 回答 2

15

这可能是由于HV-1644 Using Hibernate Validator with Java 11 将 JavaFX 引入类路径(如果org.hibernate.validator:hibernate-validator:jar:6.0.11.Final它是您的依赖项的一部分)引起的。更新6.0.12或更新应该可以解决它。

于 2018-12-18T14:30:59.420 回答
3

最近,我在使用带有 JDK 11 的 Maven 构建工件时遇到了同样的问题。指定了一些依赖项来使用该工件org.openjfx:javafx.base:11.0.0-SNAPSHOT(JavaFX,它不再是 Java 11 的一部分)。所以 Maven 一直想下载这个工件,事实上,它在我们的 Maven 存储库中并不存在。因此,构建随后失败,依赖关系树的分析也失败了。我无法确定该工件将在何处使用。

我用谷歌搜索了这个工件的用法,并在 Maven JIRA 中发现了这个关于 Hibernate 的错误问题:Dependency resolution broken with Java 11 (MNG-6500)

据说在 Hibernate 6.0.11 中,这个工件是在org.hibernate.validator:hibernate-validator:6.0.11.Final. 但是我不知道在我的项目中使用了这种 Hibernate 依赖项。我在整个本地 Maven 存储库中搜索了这个工件。令人惊讶的是,提到的 Hibernate 工件被org.glassfish.jersey.ext:jersey-bean-validation:jar:2.28(它org.glassfish.jersey:project:2.28在父链中hibernate-validator指定了版本的父链中)使用了。而这种依赖又被io.confluent:kafka-schema-registry:jar:5.4.0.

所以我唯一要做的就是从依赖项中排除这个 JavaFX 工件:io.confluent:kafka-schema-registry:jar:5.4.0

<dependency>
    <groupId>io.confluent</groupId>
    <artifactId>kafka-schema-registry</artifactId>
    <version>5.4.0</version>
    <exclusions>
        <exclusion>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx.base</artifactId>
        </exclusion>
    </exclusions>
</dependency>
于 2020-01-23T05:37:16.820 回答