Issue
Spring boot application works fine on my local but when I deploy it to K8s it shows error. Some context below:
Controller:
@RestController
@RequestMapping(path = "/v1/brightspot")
@AllArgsConstructor(onConstructor_ = {@Autowired})
@CrossOrigin
public class BrightspotController {
@Autowired
protected BrightspotService brightspotService;
/**
* Hello world.
*
* @return the hello world
*/
@GetMapping(value = "/helloWorld", produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseStatus(HttpStatus.OK)
public String getHelloWorld() {
return "Hello, World!!";
}
.
.
<more_methods>
}
Service:
@Service
@NoArgsConstructor
public class BrightspotService {
public static final String DISPLAY_IMAGE_URL = "displayImageUrl";
public static final String AUTHOR_IMAGE_URL = "authorImageUrl";
public static final String URL = "url";
private static final Logger log = LoggerFactory.getLogger(BrightspotService.class);
@Autowired
protected BrightspotHelper brightspotHelper;
/**
* Get all articles via site search.
*
* @return response
*/
public SearchResultModel getAllArticles() throws Exception {
log.info("Received getAllArticles request");
try {
// TODO: Store searchResults in cache with expiry time of max 5 minutes
String searchResults = brightspotHelper.makeBrightspotRequest(
BrightspotHelper.SITE_SEARCH_URI, BrightspotHelper.SITE_SEARCH_QUERY);
JSONObject searchResultsObj =
brightspotHelper.appendImageUrl(new JSONObject(searchResults));
SearchResultModel searchResultModel =
ObjectMapperUtils.mapJson(searchResultsObj.toString(), SearchResultModel.class);
log.info("Response {}", searchResultsObj.toString());
return searchResultModel;
} catch (Exception e) {
log.warn(e.getMessage(), e);
throw new Exception(e);
}
}
.
.
<more-methods>
Helper:
@Component("BrightspotHelper")
@NoArgsConstructor
public class BrightspotHelper {
private static final Logger log = LoggerFactory.getLogger(BrightspotHelper.class);
.
.
<more-methods>
}
Error:
2021-03-23 23:14:19.493 WARN 1 --- [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'brightspotService': Unsatisfied dependency expressed through field 'brightspotHelper'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'BrightspotHelper': Lookup method resolution failed; nested exception is java.lang.IllegalStateException: Failed to introspect Class [com.wayfair.projectphoenix.utils.BrightspotHelper] from ClassLoader [org.springframework.boot.loader.LaunchedURLClassLoader@529c2a9a] 2021-03-23 23:14:19.694 INFO 1 --- [ main] o.apache.catalina.core.StandardService : Stopping service [Tomcat] 2021-03-23 23:14:20.193 INFO 1 --- [ main] ConditionEvaluationReportLoggingListener :
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2021-03-23 23:14:20.595 ERROR 1 --- [ main] o.s.boot.SpringApplication
: Application run failedorg.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'brightspotService': Unsatisfied dependency expressed through field 'brightspotHelper'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'BrightspotHelper': Lookup method resolution failed; nested exception is java.lang.IllegalStateException: Failed to introspect Class [com.wayfair.projectphoenix.utils.BrightspotHelper] from ClassLoader [org.springframework.boot.loader.LaunchedURLClassLoader@529c2a9a] at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:643) at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:119) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:399) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1415) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:608) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:531) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:944) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:923) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:588) at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:144) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:767) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:759) at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:426) at org.springframework.boot.SpringApplication.run(SpringApplication.java:326) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1311) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1300) at com.wayfair.projectphoenix.ExampleApplication.main(ExampleApplication.java:12) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.base/java.lang.reflect.Method.invoke(Unknown Source) at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49) at org.springframework.boot.loader.Launcher.launch(Launcher.java:107) at org.springframework.boot.loader.Launcher.launch(Launcher.java:58) at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:88) Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'BrightspotHelper': Lookup method resolution failed; nested exception is java.lang.IllegalStateException: Failed to introspect Class [com.wayfair.projectphoenix.utils.BrightspotHelper] from ClassLoader [org.springframework.boot.loader.LaunchedURLClassLoader@529c2a9a] at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:289) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineConstructorsFromBeanPostProcessors(AbstractAutowireCapableBeanFactory.java:1286) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1203) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:571) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:531) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1380) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1300) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:640) ... 28 common frames omitted Caused by: java.lang.IllegalStateException: Failed to introspect Class [com.wayfair.projectphoenix.utils.BrightspotHelper] from ClassLoader [org.springframework.boot.loader.LaunchedURLClassLoader@529c2a9a] at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:481) at org.springframework.util.ReflectionUtils.doWithLocalMethods(ReflectionUtils.java:321) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:267) ... 40 common frames omitted Caused by: java.lang.NoClassDefFoundError: org/springframework/boot/configurationprocessor/json/JSONObject at java.base/java.lang.Class.getDeclaredMethods0(Native Method) at java.base/java.lang.Class.privateGetDeclaredMethods(Unknown Source) at java.base/java.lang.Class.getDeclaredMethods(Unknown Source) at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:463) ... 42 common frames omitted Caused by: java.lang.ClassNotFoundException: org.springframework.boot.configurationprocessor.json.JSONObject at java.base/java.net.URLClassLoader.findClass(Unknown Source) at java.base/java.lang.ClassLoader.loadClass(Unknown Source) at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:151) at java.base/java.lang.ClassLoader.loadClass(Unknown Source) ... 46 common frames omitted
I also added qualifiers for service and helper class but was still having the same error.
Solution
You are missing a that contains org.springframework.boot.configurationprocessor.json.JSONObject
.
That is what the exception java.lang.NoClassDefFoundError: org/springframework/boot/configurationprocessor/json/JSONObject
is telling you.
You either are missing a dependency or included to wrong version.
Answered By - M. Deinum
Answer Checked By - Clifford M. (JavaFixing Volunteer)