Sébastien Deleuze opened SPR-16992 and commented
When running Spring applications as native images via GraalVM, Class
is not Serializable
which trigger the following error as described here:
Exception in thread "main" java.lang.reflect.InvocationTargetException
at java.lang.Throwable.<init>(Throwable.java:310)
at java.lang.Exception.<init>(Exception.java:102)
at java.lang.ReflectiveOperationException.<init>(ReflectiveOperationException.java:89)
at java.lang.reflect.InvocationTargetException.<init>(InvocationTargetException.java:72)
at com.oracle.svm.reflect.proxies.Proxy_1_Converter_main.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:173)
Caused by: java.lang.IllegalArgumentException: Unsupported Type class: java.lang.Class
at java.lang.Throwable.<init>(Throwable.java:265)
at java.lang.Exception.<init>(Exception.java:66)
at java.lang.RuntimeException.<init>(RuntimeException.java:62)
at java.lang.IllegalArgumentException.<init>(IllegalArgumentException.java:52)
at org.springframework.core.SerializableTypeWrapper.forTypeProvider(SerializableTypeWrapper.java:161)
at org.springframework.core.SerializableTypeWrapper.forGenericInterfaces(SerializableTypeWrapper.java:102)
at org.springframework.core.ResolvableType.getInterfaces(ResolvableType.java:476)
at org.springframework.core.ResolvableType.as(ResolvableType.java:436)
at org.springframework.core.convert.support.GenericConversionService.getRequiredTypeInfo(GenericConversionService.java:292)
at org.springframework.core.convert.support.GenericConversionService.addConverterFactory(GenericConversionService.java:111)
at org.springframework.core.convert.support.DefaultConversionService.addScalarConverters(DefaultConversionService.java:135)
at org.springframework.core.convert.support.DefaultConversionService.addDefaultConverters(DefaultConversionService.java:88)
at org.springframework.core.convert.support.DefaultConversionService.<init>(DefaultConversionService.java:52)
at Converter.<init>(Converter.java:6)
at Converter.main(Converter.java:9)
... 3 more
SerializableTypeWrapper
should support platforms where Class
is not Serializable
.
Issue Links: - #21529 Initial GraalVM native images (Substrate VM) support ("is depended on by") - #21543 DefaultParameterNameDiscoverer should automatically adapt to Graal constraints - #21673 Detect GraalVM with system property in SerializableTypeWrapper
Referenced from: commits https://github.com/spring-projects/spring-framework/commit/06f9fb9aeb24c751d75721ff776e579d2c0b084e, https://github.com/spring-projects/spring-framework/commit/2ade122543d7cb407861efbc273da26303016c6b