Describe the bug
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.
Sample 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 java.base@20.0.1/java.util.concurrent.FutureTask.run(FutureTask.java:317) ~[demo:na]
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) ~[na:na]
at java.base@20.0.1/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 java.base@20.0.1/java.util.concurrent.FutureTask.run(FutureTask.java:317) ~[demo:na]
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) ~[na:na]
at java.base@20.0.1/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.
Comment From: muhammadismailkhan0009
as per official support, eureka server does not support native imaging.