0
votes

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 failed

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] 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.

1
This java.lang.NoClassDefFoundError: org/springframework/boot/configurationprocessor/json/JSONObject tells you exactly what is missing, a dependency. - M. Deinum
@M.Deinum You're right. Can you post this as answer so I can accept it. Thanks - Raj Parekh

1 Answers

0
votes

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.