-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Description
Describe the Issue
the project using kyro built with native-image,there is something wrong while running application.
Using the latest version of GraalVM can resolve many issues.
- I tried with the latest version of GraalVM.
GraalVM Version
native-image 17.0.16 2025-07-15
Operating System and Version
centos 7.9
Troubleshooting Confirmation
- I tried the suggestions in the troubleshooting guide.
Run Command
mvn clean package native:compile
Expected Behavior
no exception.
Actual Behavior
2025-09-04T09:52:39.283+08:00 ERROR 3696 --- [nio-9605-exec-5] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Handler dispatch failed: com.oracle.svm.core.jdk.UnsupportedFeatureError: No classes have been predefined during the image build to load from bytecodes at runtime.] with root cause
com.oracle.svm.core.jdk.UnsupportedFeatureError: No classes have been predefined during the image build to load from bytecodes at runtime.
at org.graalvm.nativeimage.builder/com.oracle.svm.core.util.VMError.unsupportedFeature(VMError.java:96) ~[na:na]
at org.graalvm.nativeimage.builder/com.oracle.svm.core.hub.PredefinedClassesSupport.throwNoBytecodeClasses(PredefinedClassesSupport.java:76) ~[na:na]
at org.graalvm.nativeimage.builder/com.oracle.svm.core.hub.PredefinedClassesSupport.loadClass(PredefinedClassesSupport.java:130) ~[na:na]
at [email protected]/java.lang.ClassLoader.defineClass(ClassLoader.java:294) ~[spring-cloud-alibaba-kryo-native-image:na]
at com.esotericsoftware.reflectasm.AccessClassLoader.defineClass(AccessClassLoader.java:78) ~[na:na]
at com.esotericsoftware.reflectasm.AccessClassLoader.defineAccessClass(AccessClassLoader.java:57) ~[na:na]
at com.esotericsoftware.reflectasm.ConstructorAccess.get(ConstructorAccess.java:99) ~[spring-cloud-alibaba-kryo-native-image:na]
at com.esotericsoftware.kryo.util.DefaultInstantiatorStrategy.newInstantiatorOf(DefaultInstantiatorStrategy.java:59) ~[na:na]
at com.esotericsoftware.kryo.Kryo.newInstantiator(Kryo.java:1190) ~[spring-cloud-alibaba-kryo-native-image:na]
at com.esotericsoftware.kryo.Kryo.newInstance(Kryo.java:1199) ~[spring-cloud-alibaba-kryo-native-image:na]
at com.esotericsoftware.kryo.serializers.FieldSerializer.create(FieldSerializer.java:164) ~[spring-cloud-alibaba-kryo-native-image:na]
at com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:123) ~[spring-cloud-alibaba-kryo-native-image:na]
at com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:877) ~[spring-cloud-alibaba-kryo-native-image:na]
at com.yuhoutian.kryo.demo.util.KryoUtil.deserialize(KryoUtil.java:36) ~[na:na]
at com.yuhoutian.kryo.demo.controller.TestController.read(TestController.java:57) ~[spring-cloud-alibaba-kryo-native-image:na]
at [email protected]/java.lang.reflect.Method.invoke(Method.java:569) ~[spring-cloud-alibaba-kryo-native-image:na]
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-cloud-alibaba-kryo-native-image:6.0.11]
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-cloud-alibaba-kryo-native-image:6.0.11]
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) ~[spring-cloud-alibaba-kryo-native-image:6.0.11]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:884) ~[spring-cloud-alibaba-kryo-native-image:6.0.11]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797) ~[spring-cloud-alibaba-kryo-native-image:6.0.11]
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-cloud-alibaba-kryo-native-image:6.0.11]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1081) ~[spring-cloud-alibaba-kryo-native-image:6.0.11]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:974) ~[spring-cloud-alibaba-kryo-native-image:6.0.11]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1011) ~[spring-cloud-alibaba-kryo-native-image:6.0.11]
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) ~[spring-cloud-alibaba-kryo-native-image:6.0.11]
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) ~[spring-cloud-alibaba-kryo-native-image:6.0]
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) ~[spring-cloud-alibaba-kryo-native-image:6.0.11]
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) ~[spring-cloud-alibaba-kryo-native-image:6.0]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:205) ~[na:na]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[na:na]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) ~[spring-cloud-alibaba-kryo-native-image:10.1.11]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) ~[na:na]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[na:na]
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-cloud-alibaba-kryo-native-image:6.0.11]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-cloud-alibaba-kryo-native-image:6.0.11]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) ~[na:na]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[na:na]
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-cloud-alibaba-kryo-native-image:6.0.11]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-cloud-alibaba-kryo-native-image:6.0.11]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) ~[na:na]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[na:na]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-cloud-alibaba-kryo-native-image:6.0.11]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-cloud-alibaba-kryo-native-image:6.0.11]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) ~[na:na]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[na:na]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:166) ~[na:na]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) ~[na:na]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) ~[spring-cloud-alibaba-kryo-native-image:10.1.11]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115) ~[na:na]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) ~[spring-cloud-alibaba-kryo-native-image:10.1.11]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[na:na]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:341) ~[na:na]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:391) ~[na:na]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[spring-cloud-alibaba-kryo-native-image:10.1.11]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:894) ~[na:na]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1740) ~[na:na]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[spring-cloud-alibaba-kryo-native-image:10.1.11]
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[na:na]
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[na:na]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[na:na]
at [email protected]/java.lang.Thread.run(Thread.java:840) ~[spring-cloud-alibaba-kryo-native-image:na]
at org.graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:915) ~[spring-cloud-alibaba-kryo-native-image:na]
at org.graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:890) ~[spring-cloud-alibaba-kryo-native-image:na]
Steps to Reproduce
(1)native-image version
[root@localhost target]# sdk current java
Using java version 23.0.9.r17-nik
[root@localhost target]# java --version
openjdk 17.0.16 2025-07-15 LTS
OpenJDK Runtime Environment Liberica-NIK-23.0.9-1 (build 17.0.16+13-LTS)
OpenJDK 64-Bit Server VM Liberica-NIK-23.0.9-1 (build 17.0.16+13-LTS, mixed mode, sharing)
[root@localhost target]# native-image --version
native-image 17.0.16 2025-07-15
GraalVM Runtime Environment Liberica-NIK-23.0.9-1 (build 17.0.16+13-LTS)
Substrate VM Liberica-NIK-23.0.9-1 (build 17.0.16+13-LTS, serial gc)
(2)source code:
https://github.com/imgoby/spring-cloud-alibaba-dubbo-native/tree/main/spring-cloud-alibaba-kryo-native-image
(3)execute compile
in the project root dir: spring-cloud-alibaba-dubbo-native
execute:
mvn clean package native:compile
(4)run application
cd spring-cloud-alibaba-dubbo-native/spring-cloud-alibaba-kryo-native-image/target
(5)exception:
2025-09-04T09:52:39.283+08:00 ERROR 3696 --- [nio-9605-exec-5] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Handler dispatch failed: com.oracle.svm.core.jdk.UnsupportedFeatureError: No classes have been predefined during the image build to load from bytecodes at runtime.] with root cause
com.oracle.svm.core.jdk.UnsupportedFeatureError: No classes have been predefined during the image build to load from bytecodes at runtime.
at org.graalvm.nativeimage.builder/com.oracle.svm.core.util.VMError.unsupportedFeature(VMError.java:96) ~[na:na]
at org.graalvm.nativeimage.builder/com.oracle.svm.core.hub.PredefinedClassesSupport.throwNoBytecodeClasses(PredefinedClassesSupport.java:76) ~[na:na]
at org.graalvm.nativeimage.builder/com.oracle.svm.core.hub.PredefinedClassesSupport.loadClass(PredefinedClassesSupport.java:130) ~[na:na]
at [email protected]/java.lang.ClassLoader.defineClass(ClassLoader.java:294) ~[spring-cloud-alibaba-kryo-native-image:na]
at com.esotericsoftware.reflectasm.AccessClassLoader.defineClass(AccessClassLoader.java:78) ~[na:na]
at com.esotericsoftware.reflectasm.AccessClassLoader.defineAccessClass(AccessClassLoader.java:57) ~[na:na]
at com.esotericsoftware.reflectasm.ConstructorAccess.get(ConstructorAccess.java:99) ~[spring-cloud-alibaba-kryo-native-image:na]
at com.esotericsoftware.kryo.util.DefaultInstantiatorStrategy.newInstantiatorOf(DefaultInstantiatorStrategy.java:59) ~[na:na]
at com.esotericsoftware.kryo.Kryo.newInstantiator(Kryo.java:1190) ~[spring-cloud-alibaba-kryo-native-image:na]
at com.esotericsoftware.kryo.Kryo.newInstance(Kryo.java:1199) ~[spring-cloud-alibaba-kryo-native-image:na]
at com.esotericsoftware.kryo.serializers.FieldSerializer.create(FieldSerializer.java:164) ~[spring-cloud-alibaba-kryo-native-image:na]
at com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:123) ~[spring-cloud-alibaba-kryo-native-image:na]
at com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:877) ~[spring-cloud-alibaba-kryo-native-image:na]
at com.yuhoutian.kryo.demo.util.KryoUtil.deserialize(KryoUtil.java:36) ~[na:na]
at com.yuhoutian.kryo.demo.controller.TestController.read(TestController.java:57) ~[spring-cloud-alibaba-kryo-native-image:na]
at [email protected]/java.lang.reflect.Method.invoke(Method.java:569) ~[spring-cloud-alibaba-kryo-native-image:na]
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-cloud-alibaba-kryo-native-image:6.0.11]
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-cloud-alibaba-kryo-native-image:6.0.11]
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) ~[spring-cloud-alibaba-kryo-native-image:6.0.11]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:884) ~[spring-cloud-alibaba-kryo-native-image:6.0.11]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797) ~[spring-cloud-alibaba-kryo-native-image:6.0.11]
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-cloud-alibaba-kryo-native-image:6.0.11]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1081) ~[spring-cloud-alibaba-kryo-native-image:6.0.11]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:974) ~[spring-cloud-alibaba-kryo-native-image:6.0.11]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1011) ~[spring-cloud-alibaba-kryo-native-image:6.0.11]
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) ~[spring-cloud-alibaba-kryo-native-image:6.0.11]
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) ~[spring-cloud-alibaba-kryo-native-image:6.0]
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) ~[spring-cloud-alibaba-kryo-native-image:6.0.11]
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) ~[spring-cloud-alibaba-kryo-native-image:6.0]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:205) ~[na:na]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[na:na]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) ~[spring-cloud-alibaba-kryo-native-image:10.1.11]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) ~[na:na]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[na:na]
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-cloud-alibaba-kryo-native-image:6.0.11]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-cloud-alibaba-kryo-native-image:6.0.11]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) ~[na:na]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[na:na]
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-cloud-alibaba-kryo-native-image:6.0.11]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-cloud-alibaba-kryo-native-image:6.0.11]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) ~[na:na]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[na:na]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-cloud-alibaba-kryo-native-image:6.0.11]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-cloud-alibaba-kryo-native-image:6.0.11]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) ~[na:na]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[na:na]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:166) ~[na:na]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) ~[na:na]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) ~[spring-cloud-alibaba-kryo-native-image:10.1.11]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115) ~[na:na]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) ~[spring-cloud-alibaba-kryo-native-image:10.1.11]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[na:na]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:341) ~[na:na]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:391) ~[na:na]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[spring-cloud-alibaba-kryo-native-image:10.1.11]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:894) ~[na:na]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1740) ~[na:na]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[spring-cloud-alibaba-kryo-native-image:10.1.11]
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[na:na]
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[na:na]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[na:na]
at [email protected]/java.lang.Thread.run(Thread.java:840) ~[spring-cloud-alibaba-kryo-native-image:na]
at org.graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:915) ~[spring-cloud-alibaba-kryo-native-image:na]
at org.graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:890) ~[spring-cloud-alibaba-kryo-native-image:na]
Additional Context
No response
Run-Time Log Output and Error Messages
No response