Eureka Discovery Server throws NullPointerException when image built with GraalVM native is run

69 Views Asked by At

i have a sample eureka discovery server app(https://github.com/muhammadismailkhan0009/demo-eureka-discovery-server). when i run it normally with command ./mvnw clean spring-boot:run

it works fine. but when i compile it with command ./mvnw -Pnative native:compile

and then run, it thrown nullpointerexception when the native-built-file is run.

Ther error is as follows:

2023-07-04T21:41:45.178+05:00  INFO 55085 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8761 (http)
2023-07-04T21:41:45.180+05:00  INFO 55085 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2023-07-04T21:41:45.181+05:00  INFO 55085 --- [           main] o.apache.catalina.core.StandardEngine    : Starting Servlet engine: [Apache Tomcat/10.1.8]
2023-07-04T21:41:45.194+05:00  INFO 55085 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2023-07-04T21:41:45.194+05:00  INFO 55085 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 64 ms
2023-07-04T21:41:45.207+05:00 ERROR 55085 --- [           main] o.s.b.web.embedded.tomcat.TomcatStarter  : Error starting Tomcat context. Exception: org.springframework.beans.factory.UnsatisfiedDependencyException. Message: Error creating bean with name 'jerseyFilterRegistration': Unsatisfied dependency expressed through method 'jerseyFilterRegistration' parameter 0: Error creating bean with name 'org.springframework.cloud.netflix.eureka.server.EurekaServerAutoConfiguration': Instantiation of supplied bean failed
2023-07-04T21:41:45.210+05:00  INFO 55085 --- [           main] o.apache.catalina.core.StandardService   : Stopping service [Tomcat]
2023-07-04T21:41:45.215+05:00  WARN 55085 --- [           main] w.s.c.ServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.context.ApplicationContextException: Unable to start web server
2023-07-04T21:41:45.217+05:00 ERROR 55085 --- [           main] o.s.boot.SpringApplication               : Application run failed

org.springframework.context.ApplicationContextException: Unable to start web server
        at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:164) ~[demo:3.0.7]
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:602) ~[demo:6.0.9]
        at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[demo:3.0.7]
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:732) ~[demo:3.0.7]
        at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:434) ~[demo:3.0.7]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:310) ~[demo:3.0.7]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1304) ~[demo:3.0.7]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1293) ~[demo:3.0.7]
        at com.example.demo.DemoApplication.main(DemoApplication.java:13) ~[demo:na]
Caused by: org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat
        at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.initialize(TomcatWebServer.java:142) ~[demo:3.0.7]
        at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.<init>(TomcatWebServer.java:104) ~[demo:3.0.7]
        at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getTomcatWebServer(TomcatServletWebServerFactory.java:488) ~[demo:3.0.7]
        at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getWebServer(TomcatServletWebServerFactory.java:210) ~[demo:3.0.7]
        at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.createWebServer(ServletWebServerApplicationContext.java:183) ~[demo:3.0.7]
        at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:161) ~[demo:3.0.7]
        ... 8 common frames omitted
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'jerseyFilterRegistration': Unsatisfied dependency expressed through method 'jerseyFilterRegistration' parameter 0: Error creating bean with name 'org.springframework.cloud.netflix.eureka.server.EurekaServerAutoConfiguration': Instantiation of supplied bean failed
        at org.springframework.beans.factory.aot.BeanInstanceSupplier.resolveArgument(BeanInstanceSupplier.java:315) ~[na:na]
        at org.springframework.beans.factory.aot.BeanInstanceSupplier.resolveArguments(BeanInstanceSupplier.java:258) ~[na:na]
        at org.springframework.beans.factory.aot.BeanInstanceSupplier.get(BeanInstanceSupplier.java:198) ~[na:na]
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.obtainInstanceFromSupplier(DefaultListableBeanFactory.java:947) ~[demo:6.0.9]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainFromSupplier(AbstractAutowireCapableBeanFactory.java:1214) ~[demo:6.0.9]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1158) ~[demo:6.0.9]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:560) ~[demo:6.0.9]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520) ~[demo:6.0.9]
        at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) ~[demo:6.0.9]
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[demo:6.0.9]
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) ~[demo:6.0.9]
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:205) ~[demo:6.0.9]
        at org.springframework.boot.web.servlet.ServletContextInitializerBeans.getOrderedBeansOfType(ServletContextInitializerBeans.java:210) ~[demo:3.0.7]
        at org.springframework.boot.web.servlet.ServletContextInitializerBeans.getOrderedBeansOfType(ServletContextInitializerBeans.java:201) ~[demo:3.0.7]
        at org.springframework.boot.web.servlet.ServletContextInitializerBeans.addServletContextInitializerBeans(ServletContextInitializerBeans.java:96) ~[demo:3.0.7]
        at org.springframework.boot.web.servlet.ServletContextInitializerBeans.<init>(ServletContextInitializerBeans.java:85) ~[demo:3.0.7]
        at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.getServletContextInitializerBeans(ServletWebServerApplicationContext.java:261) ~[demo:3.0.7]
        at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.selfInitialize(ServletWebServerApplicationContext.java:235) ~[demo:3.0.7]
        at org.springframework.boot.web.embedded.tomcat.TomcatStarter.onStartup(TomcatStarter.java:52) ~[na:na]
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4882) ~[demo:10.1.8]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ~[demo:10.1.8]
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1332) ~[na:na]
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1322) ~[na:na]
        at [email protected]/java.util.concurrent.FutureTask.run(FutureTask.java:317) ~[demo:na]
        at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) ~[na:na]
        at [email protected]/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145) ~[demo:na]
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:871) ~[demo:10.1.8]
        at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:846) ~[na:na]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ~[demo:10.1.8]
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1332) ~[na:na]
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1322) ~[na:na]
        at [email protected]/java.util.concurrent.FutureTask.run(FutureTask.java:317) ~[demo:na]
        at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) ~[na:na]
        at [email protected]/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145) ~[demo:na]
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:871) ~[demo:10.1.8]
        at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:241) ~[na:na]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ~[demo:10.1.8]
        at org.apache.catalina.core.StandardService.startInternal(StandardService.java:428) ~[na:na]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ~[demo:10.1.8]
        at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:913) ~[na:na]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ~[demo:10.1.8]
        at org.apache.catalina.startup.Tomcat.start(Tomcat.java:485) ~[demo:10.1.8]
        at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.initialize(TomcatWebServer.java:123) ~[demo:3.0.7]
        ... 13 common frames omitted
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.cloud.netflix.eureka.server.EurekaServerAutoConfiguration': Instantiation of supplied bean failed
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainFromSupplier(AbstractAutowireCapableBeanFactory.java:1220) ~[demo:6.0.9]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1158) ~[demo:6.0.9]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:560) ~[demo:6.0.9]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520) ~[demo:6.0.9]
        at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) ~[demo:6.0.9]
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[demo:6.0.9]
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) ~[demo:6.0.9]
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:225) ~[demo:6.0.9]
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveNamedBean(DefaultListableBeanFactory.java:1310) ~[demo:6.0.9]
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveNamedBean(DefaultListableBeanFactory.java:1271) ~[demo:6.0.9]
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveBean(DefaultListableBeanFactory.java:484) ~[demo:6.0.9]
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:339) ~[demo:6.0.9]
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:332) ~[demo:6.0.9]
        at org.springframework.cloud.netflix.eureka.server.EurekaServerAutoConfiguration__BeanDefinitions.lambda$getJerseyApplicationInstanceSupplier$13(EurekaServerAutoConfiguration__BeanDefinitions.java:296) ~[na:na]
        at org.springframework.util.function.ThrowingBiFunction.apply(ThrowingBiFunction.java:68) ~[demo:6.0.9]
        at org.springframework.util.function.ThrowingBiFunction.apply(ThrowingBiFunction.java:54) ~[demo:6.0.9]
        at org.springframework.beans.factory.aot.BeanInstanceSupplier.lambda$get$2(BeanInstanceSupplier.java:200) ~[na:na]
        at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:58) ~[demo:6.0.9]
        at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:46) ~[demo:6.0.9]
        at org.springframework.beans.factory.aot.BeanInstanceSupplier.invokeBeanSupplier(BeanInstanceSupplier.java:212) ~[na:na]
        at org.springframework.beans.factory.aot.BeanInstanceSupplier.get(BeanInstanceSupplier.java:200) ~[na:na]
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.obtainInstanceFromSupplier(DefaultListableBeanFactory.java:947) ~[demo:6.0.9]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainFromSupplier(AbstractAutowireCapableBeanFactory.java:1214) ~[demo:6.0.9]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1158) ~[demo:6.0.9]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:560) ~[demo:6.0.9]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520) ~[demo:6.0.9]
        at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) ~[demo:6.0.9]
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[demo:6.0.9]
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) ~[demo:6.0.9]
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) ~[demo:6.0.9]
        at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254) ~[demo:6.0.9]
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1417) ~[demo:6.0.9]
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1337) ~[demo:6.0.9]
        at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:888) ~[na:na]
        at org.springframework.beans.factory.support.RegisteredBean.resolveAutowiredArgument(RegisteredBean.java:219) ~[demo:6.0.9]
        at org.springframework.beans.factory.aot.BeanInstanceSupplier.resolveArgument(BeanInstanceSupplier.java:312) ~[na:na]
        ... 55 common frames omitted
Caused by: java.lang.ExceptionInInitializerError: null
        at org.springframework.beans.factory.support.InstanceSupplier.lambda$using$0(InstanceSupplier.java:104) ~[demo:6.0.9]
        at org.springframework.beans.factory.support.InstanceSupplier$1.get(InstanceSupplier.java:83) ~[na:na]
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.obtainInstanceFromSupplier(DefaultListableBeanFactory.java:947) ~[demo:6.0.9]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainFromSupplier(AbstractAutowireCapableBeanFactory.java:1214) ~[demo:6.0.9]
        ... 90 common frames omitted
Caused by: java.lang.NullPointerException: null
        at org.springframework.util.ReflectionUtils.makeAccessible(ReflectionUtils.java:784) ~[na:na]
        at org.springframework.cloud.netflix.eureka.server.CloudJacksonJson$CloudJacksonCodec.setField(CloudJacksonJson.java:150) ~[na:na]
        at org.springframework.cloud.netflix.eureka.server.CloudJacksonJson$CloudJacksonCodec.<init>(CloudJacksonJson.java:137) ~[na:na]
        at org.springframework.cloud.netflix.eureka.server.CloudJacksonJson.<init>(CloudJacksonJson.java:56) ~[na:na]
        at org.springframework.cloud.netflix.eureka.server.EurekaServerAutoConfiguration.<clinit>(EurekaServerAutoConfiguration.java:150) ~[demo:na]
        ... 94 common frames omitted

I am not sure but it seems that error is happening because of @EnableEurekaServer annotation.

I am expecting that the native image compiled via GraalVM runs successfully. The image is compiled successfully, but throws error when is run on same machine. Note that it is not docker image. Also, i have tried the code with Spring Boot Version: 3.1.1 as well, but same issue happens.

0

There are 0 best solutions below