Hello,
Spring Boot 2.1.4-RELEASE uses Quartz 2.3.1 which contains hikaricp-java7 (since this release - see https://github.com/quartz-scheduler/quartz/issues/294) but the spring-boot-dependencies POM still excludes hikaricp-java6.
This causes an AbstractMethodError when using HikariCP and Quartz together.
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.
Best regards
Sebastian
Is this open for contribution? I would be happy to contribute if @pse-sonic don't mind
Feel free to solve this issue :)
@ielatif fixing the issue is easy but I'd like to put something in place so that our build fails the next time this happens. If you want to give that a try, feel free to go ahead.
This is similar to this one https://github.com/spring-projects/spring-boot/issues/12364
There is tests for Quartz in QuartzAutoConfigurationTests. We can add a new test withHikariCPDataSource to integrate HikariCP and Quartz. @snicoll What do you think?
@ielatif it's already using HikariCP most probably. If you managed to reproduce the error in a test, feel free to submit something.
Additionally the project should really set up a duplicate classpath check for a maximum possible amount of dependencies (all starters for example).
This would avoid such kind of issues in the future.
Is there a workaround for this issue, or should I stay on 2.1.3?
You can exclude the dependency yourself in your project for the time being.
Closing in favour of PR #16502
For me this is not solved with 2.1.5 and quartz 2.3.1 - the startup still fails with the error.
@oneiros-de This issue applied specifically to a com.zaxxer:HikariCP-*
dependency being pulled in via Quartz. You may have such a dependency coming from somewhere else. If you'd like us to investigate, please open a new issue with a minimal sample that reproduces the problem.
I'm using latest springboot 2.3.2, and have the same issue mentioned above.
With springboot 2.3.1 , I didn't get this error.
As a workaround I added to my dependency:
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
}
Before this exclusion, I had the following dependencies:
+--- 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
I'm not sure if that is an issue related to Quartz or to SpringBoot...
Thanks for letting us know, @oridool. This is a bug in the dependency management plugin that the changes made for https://github.com/spring-projects/spring-boot/issues/21911 have exposed. I've opened https://github.com/spring-gradle-plugins/dependency-management-plugin/issues/281.
Thank you @wilkinsona for the fast fix.
I assume it will be available with io.spring.dependency-management gradle plugin Version 1.0.10.RELEASE . Right?
Right.
Most helpful comment
I'm using latest springboot 2.3.2, and have the same issue mentioned above.
With springboot 2.3.1 , I didn't get this error.
As a workaround I added to my dependency:
Before this exclusion, I had the following dependencies:
I'm not sure if that is an issue related to Quartz or to SpringBoot...