[spring-projects/spring-boot]排除正确的 HikariCP 版本

2024-04-10 316 views
0

你好,

Spring Boot 2.1.4-RELEASE 使用 Quartz 2.3.1,其中包含 hikaricp-java7 (自此版本以来 - 请参阅https://github.com/quartz-scheduler/quartz/issues/294),但 spring-boot-dependency POM 仍然不包括 hikaricp-java6。

当同时使用 HikariCP 和 Quartz 时,这会导致 AbstractMethodError。

Caused by: java.lang.AbstractMethodError: Receiver class com.zaxxer.hikari.metrics.micrometer.MicrometerMetricsTrackerFactory does not define or inherit an implementation of the resolved method abstract create(Ljava/lang/String;Lcom/zaxxer/hikari/metrics/PoolStats;)Lcom/zaxxer/hikari/metrics/MetricsTracker; of interface com.zaxxer.hikari.metrics.MetricsTrackerFactory.

最好的问候塞巴斯蒂安

回答

7

这是否开放供稿?如果@pse-sonic 不介意的话我很乐意做出贡献

6

随意解决这个问题:)

9

@ielatif 解决这个问题很容易,但我想把一些东西放在适当的位置,以便我们的构建在下次发生这种情况时失败。如果您想尝试一下,请尽管继续。

6

@ielatif 它很可能已经在使用 HikariCP 了。如果您设法在测试中重现该错误,请随时提交一些内容。

4

此外,项目确实应该设置重复的类路径检查,以检查最大可能数量的依赖项(例如所有启动器)。这将避免将来出现此类问题。

6

这个问题有解决方法吗?或者我应该继续使用 2.1.3?

6

您可以暂时在项目中自行排除依赖项。

7

结束有利于 PR #16502

8

对我来说,2.1.5 和quartz 2.3.1 没有解决这个问题 - 启动仍然失败并出现错误。

7

@oneiros-de 这个问题特别适用于com.zaxxer:HikariCP-*通过 Quartz 引入的依赖项。你可能有来自其他地方的这种依赖。如果您希望我们进行调查,请使用重现问题的最小样本打开一个新问题。

6

我正在使用最新的 springboot 2.3.2,并且有上面提到的相同问题。

使用 springboot 2.3.1 ,我没有收到此错误。作为解决方法,我添加了我的依赖项:

    implementation ('org.springframework.boot:spring-boot-starter-quartz') {
        exclude group: 'com.zaxxer', module: 'HikariCP-java7'
        // workaround for https://github.com/spring-projects/spring-boot/issues/16489
    }

在排除之前,我有以下依赖项:

+--- org.springframework.boot:spring-boot-starter-quartz -> 2.3.2.RELEASE
|    +--- org.springframework.boot:spring-boot-starter:2.3.2.RELEASE (*)
|    +--- org.springframework:spring-context-support:5.2.8.RELEASE (*)
|    +--- org.springframework:spring-tx:5.2.8.RELEASE (*)
|    \--- org.quartz-scheduler:quartz:2.3.2
|         +--- com.mchange:mchange-commons-java:0.2.15
|         +--- **com.zaxxer:HikariCP-java7:2.4.13**
|         |    \--- org.slf4j:slf4j-api:1.7.21 -> 1.7.30
|         \--- org.slf4j:slf4j-api:1.7.7 -> 1.7.30

我不确定这是与 Quartz 还是 SpringBoot 有关的问题......

7

感谢@wilkinsona 的快速修复。我认为它将在 io.spring.dependency-management gradle 插件版本 1.0 中提供。10.发布。正确的?

3

正确的。