Reputation: 426
Application was working correctly with version 2.2.6 but as the application is upgraded to latest version of spring boot 2.3.0 it stopped working and fails during startup.
2020-05-20T08:43:04.408+01:00 [APP/PROC/WEB/0] [OUT] 2020-05-20 07:43:04.407 ERROR 15 --- [ main] o.s.b.web.embedded.tomcat.TomcatStarter : Error starting Tomcat context.
Exception: org.springframework.beans.factory.UnsatisfiedDependencyException. Message: Error creating bean with name 'webMvcMetricsFilter' defined in class path resource [org/springframework/boot/actuate/autoconfigure/metrics/web/servlet/WebMvcMetricsAutoConfiguration.class]:
Unsatisfied dependency expressed through method 'webMvcMetricsFilter' parameter 0;
nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException:
Error creating bean with name 'compositeMeterRegistry' defined in class path resource [org/springframework/boot/actuate/autoconfigure/metrics/CompositeMeterRegistryConfiguration.class]:
Unsatisfied dependency expressed through method 'compositeMeterRegistry' parameter 1;
nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException:
Error creating bean with name 'prometheusMeterRegistry' defined in class path resource [org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusMetricsExportAutoConfiguration.class]:
Unsatisfied dependency expressed through method 'prometheusMeterRegistry' parameter 0;
nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException:
Error creating bean with name 'prometheusConfig' defined in class path resource [org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusMetricsExportAutoConfiguration.class]:
Unsatisfied dependency expressed through method 'prometheusConfig' parameter 0;
nested exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'management.metrics.export.prometheus-org.springframework.boot.actuate.autoconfigure.metrics.export.prometheus.PrometheusProperties':
Lookup method resolution failed;
nested exception is java.lang.IllegalStateException:
Failed to introspect Class [org.springframework.boot.actuate.autoconfigure.metrics.export.prometheus.PrometheusProperties] from ClassLoader [org.springframework.boot.loader.LaunchedURLClassLoader@4f3f5b24]
Can see below class not found exception at the bottom of start trace.
Upvotes: 17
Views: 45146
Reputation: 516
In your particular case the micrometer-registry-prometheus must be in-line with spring boot's micrometer-core's version. It is 1.5.1
because Spring Boot (Actuator) pulls that dependency in with version 2.3.0.
dependencies {
implementation group: 'io.micrometer', name: 'micrometer-registry-prometheus', version: '1.5.1'
}
Upvotes: 45
Reputation: 1565
These two answers really helped me to sort out my issue. I'm posting this to show how to find the dependencies and version used by Spring Boot Starter Actuator ( inorder to find the io.micrometer:micrometer-core version used in your actuator dependency).
First go to the https://mvnrepository.com and search for the Spring Boot Starter Actuator and click on the "Spring Boot Starter Actuator" result. Then once you go inside, click on the version that your application use.
Then you will navigate to a page like below one
From this page, if you scroll little bit down, you'll be able to see all the other dependencies used by spring started actuator dependency (Screenshot attached below). In that table (compiled dependency), you'll be able to see the micrometer version that spring actuator uses.
Upvotes: 8
Reputation: 343
Adding this answer as I initially didn't understand
must be in-line with spring boot's micrometer-core's version.
of lestar cdog answer
The micrometer-registry-prometheus package has to match the version of the io.micrometer:micrometer-core version. io.micrometer:micrometer-core is pulled by spring acutuator dependency.
You can check what version io.micrometer:micrometer-core in your IDE
IntelliJ:
Project window(cmd + 1) -> External Libraries
Upvotes: 13
Reputation: 176
When look at the partial logfile you included, it seems to me that multiple dependencies are not all there or working correctly. Please see the Spring Boot recommendations for using a dependency manager: https://docs.spring.io/spring-boot/docs/current/reference/html/using-spring-boot.html#using-boot-build-systems
When upgrading, it is always useful to check the releasenotes/changelog between versions.
Release notes for 2.3: https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.3-Release-Notes
Changelog for 2.2.7 to 2.3.0 see: https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.3.0-Configuration-Changelog
If you require more help, please provide information about your configuration;
Upvotes: 1