This repository was archived by the owner on Feb 23, 2023. It is now read-only.
This repository was archived by the owner on Feb 23, 2023. It is now read-only.
Adding spring-boot-starter-hateoas to spring native project results in java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletRequest #1281
Closed
Description
Hi,
I am trying to configure a spring web flux application with the intent of building a native image later on. So far, I am able to build a dummy application into an image using spring native, run it and get a hello world response without issues.
As soon as I add spring-boot-starter-hateoas ( while excluding spring-boot-starter-tomcat because I don't want to use Tomcat but rather Netty with functional routes and handlers ), I get the error below during the image build process :
I am not quite sure how to get rid of all the "servlet" dependencies from spring-hateoas if this is at all possible.
[INFO] Generating class file bytes for a proxy named org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController$$SpringProxy$a0f480bd
[ERROR] java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletRequest
[ERROR] [java.base/java.lang.Class.getDeclaredMethods0(Native Method), java.base/java.lang.Class.privateGetDeclaredMethods(Class.java:3166), java.base/java.lang.Class.getDeclaredMethods(Class.java:2309), org.springframework.aop.framework.ProxyGenerator.doValidateClass(ProxyGenerator.java:136), org.springframewo
rk.aop.framework.ProxyGenerator.validateClassIfNecessary(ProxyGenerator.java:123), org.springframework.aop.framework.ProxyGenerator.getProxyBytes(ProxyGenerator.java:72), org.springframework.aot.nativex.ConfigurationContributor.generateBuildTimeClassProxy(ConfigurationContributor.java:182), org.springframework.
aot.nativex.ConfigurationContributor.generateBuildTimeClassProxies(ConfigurationContributor.java:160), org.springframework.aot.nativex.ConfigurationContributor.processBuildTimeClassProxyRequests(ConfigurationContributor.java:137), org.springframework.aot.nativex.ConfigurationContributor.contribute(Configuration
Contributor.java:72), org.springframework.aot.BootstrapCodeGenerator.generate(BootstrapCodeGenerator.java:77), org.springframework.aot.maven.TestGenerateMojo.execute(TestGenerateMojo.java:65), org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137), org.apache.maven.lif
ecycle.internal.MojoExecutor.execute(MojoExecutor.java:210), org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:156), org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:148), org.apache.maven.lifecycle.internal.MojoExecutor.executeForkedExecutions(MojoExecutor.jav
a:355), org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:200), org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:156), org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:148), org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.bu
ildProject(LifecycleModuleBuilder.java:117), org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81), org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56), org.apache.maven.lifecycle.internal.Lifecyc
leStarter.execute(LifecycleStarter.java:128), org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305), org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192), org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105), org.apache.maven.cli.MavenCli.execute(MavenCli.java:972), org.apache.maven.c
li.MavenCli.doMain(MavenCli.java:293), org.apache.maven.cli.MavenCli.main(MavenCli.java:196), java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method), java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62), java.base/jdk.internal.reflect.Delegatin
gMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43), java.base/java.lang.reflect.Method.invoke(Method.java:566), org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:282), org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225), org.codehaus.plexus.clas
sworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406), org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347)]