Single purpose repository used to demonstrate a bug somewhere in the project, that appears to be based around Springdoc. The presence of any springdoc-openapi library (including springdoc-openapi-native) breaks native compilation.
To reproduce:
- Ensure Springdoc libraries are commented out in
build.gradle
- Run
./gradlew bootBuildImage
- this should succeed - Verify image runs with
docker run docker.io/library/demo:0.0.1-SNAPSHOT
- Uncomment springdoc-openapi libraries
- Run
./gradlew bootBuildImage
- this should fail with error:
> Task :generateAot
2022-01-11 14:31:17.212 INFO 23744 --- [ main] o.s.a.build.ContextBootstrapContributor : Detected application class: com.example.demo.DemoApplication
2022-01-11 14:31:17.215 INFO 23744 --- [ main] o.s.a.build.ContextBootstrapContributor : Processing application context
2022-01-11 14:31:21.104 INFO 23744 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
2022-01-11 14:31:21.170 INFO 23744 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 25 ms. Found 0 JPA repository interfaces.
2022-01-11 14:31:27.240 INFO 23744 --- [ main] o.s.a.build.ContextBootstrapContributor : Processed 404 bean definitions in 10020ms
2022-01-11 14:31:27.627 INFO 23744 --- [ main] o.s.nativex.support.SpringAnalyzer : Spring Native operating mode: native
2022-01-11 14:31:37.070 INFO 23744 --- [ main] o.s.aop.framework.ProxyGenerator : Generating class file bytes for a proxy named org.springdoc.webmvc.ui.SwaggerUiHome$$SpringProxy$92421e34
2022-01-11 14:31:37.464 INFO 23744 --- [ main] o.s.aop.framework.ProxyGenerator : Generating class file bytes for a proxy named org.springdoc.webmvc.api.OpenApiWebMvcResource$$SpringProxy$92b3879f
2022-01-11 14:31:37.674 INFO 23744 --- [ main] o.s.aop.framework.ProxyGenerator : Generating class file bytes for a proxy named org.springdoc.webmvc.ui.SwaggerConfigResource$$SpringProxy$70ccf26d
2022-01-11 14:31:37.706 INFO 23744 --- [ main] o.s.aop.framework.ProxyGenerator : Generating class file bytes for a proxy named org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController$$SpringProxy$a0f480bd
2022-01-11 14:31:37.763 INFO 23744 --- [ main] o.s.aop.framework.ProxyGenerator : Generating class file bytes for a proxy named org.springframework.http.ResponseEntity$$SpringProxy$a5ccba95
2022-01-11 14:31:37.807 INFO 23744 --- [ main] o.s.aop.framework.ProxyGenerator : Generating class file bytes for a proxy named org.springframework.web.servlet.ModelAndView$$SpringProxy$c41c6ba7
2022-01-11 14:31:37.873 INFO 23744 --- [ main] o.s.aop.framework.ProxyGenerator : Generating class file bytes for a proxy named org.springdoc.webmvc.ui.SwaggerWelcomeWebMvc$$SpringProxy$71bfef47
2022-01-11 14:31:37.874 INFO 23744 --- [ main] o.s.aop.framework.ProxyGenerator : Unable to proxy method [void org.springdoc.webmvc.ui.SwaggerWelcomeCommon.buildFromCurrentContextPath(javax.servlet.http.HttpServletRequest)] because it is package-visible across different ClassLoaders: All calls to this method via a proxy will NOT be routed to the target instance.
2022-01-11 14:31:37.926 INFO 23744 --- [ main] o.s.aop.framework.ProxyGenerator : Generating class file bytes for a proxy named org.springdoc.webmvc.api.MultipleOpenApiWebMvcResource$$SpringProxy$1db58c2f
2022-01-11 14:31:37.951 INFO 23744 --- [ main] o.s.aop.framework.ProxyGenerator : Generating class file bytes for a proxy named java.lang.String$$SpringProxy$4916742f
2022-01-11 14:31:37.952 INFO 23744 --- [ main] o.s.aop.framework.ProxyGenerator : Unable to proxy method [byte[] java.lang.String.value()] because it is package-visible across different ClassLoaders: All calls to this method via a proxy will NOT be routed to the target instance.
2022-01-11 14:31:37.952 INFO 23744 --- [ main] o.s.aop.framework.ProxyGenerator : Unable to proxy method [byte java.lang.String.coder()] because it is package-visible across different ClassLoaders: All calls to this method via a proxy will NOT be routed to the target instance.
2022-01-11 14:31:37.952 INFO 23744 --- [ main] o.s.aop.framework.ProxyGenerator : Unable to proxy method [boolean java.lang.String.isLatin1()] because it is package-visible across different ClassLoaders: All calls to this method via a proxy will NOT be routed to the target instance.
2022-01-11 14:31:37.952 INFO 23744 --- [ main] o.s.aop.framework.ProxyGenerator : Unable to proxy method [void java.lang.String.getBytes(byte[],int,byte)] because it is package-visible across different ClassLoaders: All calls to this method via a proxy will NOT be routed to the target instance.
java.lang.IllegalArgumentException: Cannot subclass primitive, array or final types: class java.lang.String
at net.bytebuddy.ByteBuddy.subclass(ByteBuddy.java:406)
2022-01-11 14:31:37.952 INFO 23744 --- [ main] o.s.aop.framework.ProxyGenerator : Unable to proxy method [void java.lang.String.getBytes(byte[],int,int,byte,int)] because it is package-visible across different ClassLoaders: All calls to this method via a proxy will NOT be routed to the target instance.
at net.bytebuddy.ByteBuddy.subclass(ByteBuddy.java:379)
at net.bytebuddy.ByteBuddy.subclass(ByteBuddy.java:276)
at org.springframework.aop.framework.ProxyGenerator.getProxyBytes(ProxyGenerator.java:80)
at org.springframework.aot.nativex.ConfigurationContributor.generateBuildTimeClassProxy(ConfigurationContributor.java:193)
at org.springframework.aot.nativex.ConfigurationContributor.generateBuildTimeClassProxies(ConfigurationContributor.java:170)
at org.springframework.aot.nativex.ConfigurationContributor.processBuildTimeClassProxyRequests(ConfigurationContributor.java:142)
at org.springframework.aot.nativex.ConfigurationContributor.contribute(ConfigurationContributor.java:74)
at org.springframework.aot.build.BootstrapCodeGenerator.generate(BootstrapCodeGenerator.java:91)
at org.springframework.aot.build.BootstrapCodeGenerator.generate(BootstrapCodeGenerator.java:71)
at org.springframework.aot.build.GenerateBootstrapCommand.call(GenerateBootstrapCommand.java:107)
at org.springframework.aot.build.GenerateBootstrapCommand.call(GenerateBootstrapCommand.java:42)
at picocli.CommandLine.executeUserObject(CommandLine.java:1953)
at picocli.CommandLine.access$1300(CommandLine.java:145)
at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2352)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2346)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2311)
at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179)
at picocli.CommandLine.execute(CommandLine.java:2078)
at org.springframework.aot.build.GenerateBootstrapCommand.main(GenerateBootstrapCommand.java:112)
java.lang.IllegalStateException: Problem creating proxy with configuration: org.springframework.aop.framework.ProxyConfiguration@4916742f
at org.springframework.aop.framework.ProxyGenerator.getProxyBytes(ProxyGenerator.java:94)
at org.springframework.aot.nativex.ConfigurationContributor.generateBuildTimeClassProxy(ConfigurationContributor.java:193)
at org.springframework.aot.nativex.ConfigurationContributor.generateBuildTimeClassProxies(ConfigurationContributor.java:170)
at org.springframework.aot.nativex.ConfigurationContributor.processBuildTimeClassProxyRequests(ConfigurationContributor.java:142)
at org.springframework.aot.nativex.ConfigurationContributor.contribute(ConfigurationContributor.java:74)
at org.springframework.aot.build.BootstrapCodeGenerator.generate(BootstrapCodeGenerator.java:91)
at org.springframework.aot.build.BootstrapCodeGenerator.generate(BootstrapCodeGenerator.java:71)
at org.springframework.aot.build.GenerateBootstrapCommand.call(GenerateBootstrapCommand.java:107)
at org.springframework.aot.build.GenerateBootstrapCommand.call(GenerateBootstrapCommand.java:42)
at picocli.CommandLine.executeUserObject(CommandLine.java:1953)
at picocli.CommandLine.access$1300(CommandLine.java:145)
at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2352)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2346)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2311)
at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179)
at picocli.CommandLine.execute(CommandLine.java:2078)
at org.springframework.aot.build.GenerateBootstrapCommand.main(GenerateBootstrapCommand.java:112)
Caused by: java.lang.IllegalArgumentException: Cannot subclass primitive, array or final types: class java.lang.String
at net.bytebuddy.ByteBuddy.subclass(ByteBuddy.java:406)
at net.bytebuddy.ByteBuddy.subclass(ByteBuddy.java:379)
at net.bytebuddy.ByteBuddy.subclass(ByteBuddy.java:276)
at org.springframework.aop.framework.ProxyGenerator.getProxyBytes(ProxyGenerator.java:80)
... 16 more