Details
-
Bug
-
Status: Resolved
-
Minor
-
Resolution: Fixed
-
2.18.0
-
None
-
Unknown
Description
After the introducion of the health check in CAMEL-10026, I get the attached exception on a sample application that depends on spring-boot-starter and camel-spring-boot-starter.
The problem seems to be related to the following dependency on the camel-spring-boot module:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-actuator</artifactId> <optional>true</optional> <version>${spring-boot-version}</version> </dependency>
The dependency is declared as optional, but the HealthCheck component inherits from org.springframework.boot.actuate.health.AbstractHealthIndicator.
A project importing the camel-spring-boot module does not import transitively the actuator module, so I get the exception.
If the application does not start, the dependency cannot be optional.
Excaption:
java.lang.IllegalStateException: Could not evaluate condition on org.apache.camel.spring.boot.health.CamelHealthAutoConfiguration#camelHealthIndicator due to org/springframework/boot/actuate/health/AbstractHealthIndicator not found. Make sure your own configuration does not rely on that class. This can also happen if you are @ComponentScanning a springframework package (e.g. if you put a @ComponentScan in the default package by mistake) at org.springframework.boot.autoconfigure.condition.SpringBootCondition.matches(SpringBootCondition.java:55) ~[spring-boot-autoconfigure-1.3.5.RELEASE.jar!/:1.3.5.RELEASE] at org.springframework.context.annotation.ConditionEvaluator.shouldSkip(ConditionEvaluator.java:102) ~[spring-context-4.2.6.RELEASE.jar!/:4.2.6.RELEASE] at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForBeanMethod(ConfigurationClassBeanDefinitionReader.java:178) ~[spring-context-4.2.6.RELEASE.jar!/:4.2.6.RELEASE] at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForConfigurationClass(ConfigurationClassBeanDefinitionReader.java:140) ~[spring-context-4.2.6.RELEASE.jar!/:4.2.6.RELEASE] at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitions(ConfigurationClassBeanDefinitionReader.java:116) ~[spring-context-4.2.6.RELEASE.jar!/:4.2.6.RELEASE] at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:333) ~[spring-context-4.2.6.RELEASE.jar!/:4.2.6.RELEASE] at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:243) ~[spring-context-4.2.6.RELEASE.jar!/:4.2.6.RELEASE] at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:273) ~[spring-context-4.2.6.RELEASE.jar!/:4.2.6.RELEASE] at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:98) ~[spring-context-4.2.6.RELEASE.jar!/:4.2.6.RELEASE] at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:678) ~[spring-context-4.2.6.RELEASE.jar!/:4.2.6.RELEASE] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:520) ~[spring-context-4.2.6.RELEASE.jar!/:4.2.6.RELEASE] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:766) [spring-boot-1.3.5.RELEASE.jar!/:1.3.5.RELEASE] at org.springframework.boot.SpringApplication.createAndRefreshContext(SpringApplication.java:361) [spring-boot-1.3.5.RELEASE.jar!/:1.3.5.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) [spring-boot-1.3.5.RELEASE.jar!/:1.3.5.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1191) [spring-boot-1.3.5.RELEASE.jar!/:1.3.5.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1180) [spring-boot-1.3.5.RELEASE.jar!/:1.3.5.RELEASE] at org.apache.camel.itest.springboot.ITestBoot.main(ITestBoot.java:29) [test.jar!/:na] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_91] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_91] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_91] at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_91] at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:54) [test.jar!/:na] at java.lang.Thread.run(Thread.java:745) [na:1.8.0_91] Caused by: java.lang.NoClassDefFoundError: org/springframework/boot/actuate/health/AbstractHealthIndicator at java.lang.ClassLoader.defineClass1(Native Method) ~[na:1.8.0_91] at java.lang.ClassLoader.defineClass(ClassLoader.java:763) ~[na:1.8.0_91] at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[na:1.8.0_91] at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) ~[na:1.8.0_91] at java.net.URLClassLoader.access$100(URLClassLoader.java:73) ~[na:1.8.0_91] at java.net.URLClassLoader$1.run(URLClassLoader.java:368) ~[na:1.8.0_91] at java.net.URLClassLoader$1.run(URLClassLoader.java:362) ~[na:1.8.0_91] at java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_91] at java.net.URLClassLoader.findClass(URLClassLoader.java:361) ~[na:1.8.0_91] at org.springframework.boot.loader.LaunchedURLClassLoader.doLoadClass(LaunchedURLClassLoader.java:170) ~[test.jar!/:na] at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:142) ~[test.jar!/:na] at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_91] at org.springframework.core.type.classreading.AnnotationReadingVisitorUtils.convertClassValues(AnnotationReadingVisitorUtils.java:73) ~[spring-core-4.2.6.RELEASE.jar!/:4.2.6.RELEASE] at org.springframework.core.type.classreading.MethodMetadataReadingVisitor.getAnnotationAttributes(MethodMetadataReadingVisitor.java:125) ~[spring-core-4.2.6.RELEASE.jar!/:4.2.6.RELEASE] at org.springframework.core.type.classreading.MethodMetadataReadingVisitor.getAnnotationAttributes(MethodMetadataReadingVisitor.java:118) ~[spring-core-4.2.6.RELEASE.jar!/:4.2.6.RELEASE] at org.springframework.core.type.classreading.MethodMetadataReadingVisitor.getAnnotationAttributes(MethodMetadataReadingVisitor.java:45) ~[spring-core-4.2.6.RELEASE.jar!/:4.2.6.RELEASE] at org.springframework.boot.autoconfigure.condition.OnBeanCondition$BeanSearchSpec.<init>(OnBeanCondition.java:274) ~[spring-boot-autoconfigure-1.3.5.RELEASE.jar!/:1.3.5.RELEASE] at org.springframework.boot.autoconfigure.condition.OnBeanCondition.getMatchOutcome(OnBeanCondition.java:111) ~[spring-boot-autoconfigure-1.3.5.RELEASE.jar!/:1.3.5.RELEASE] at org.springframework.boot.autoconfigure.condition.SpringBootCondition.matches(SpringBootCondition.java:47) ~[spring-boot-autoconfigure-1.3.5.RELEASE.jar!/:1.3.5.RELEASE] ... 22 common frames omitted Caused by: java.lang.ClassNotFoundException: org.springframework.boot.actuate.health.AbstractHealthIndicator at java.net.URLClassLoader.findClass(URLClassLoader.java:381) ~[na:1.8.0_91] at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_91] at org.springframework.boot.loader.LaunchedURLClassLoader.doLoadClass(LaunchedURLClassLoader.java:178) ~[test.jar!/:na] at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:142) ~[test.jar!/:na] at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_91] ... 41 common frames omitted
Attachments
Issue Links
- links to