Closed as not planned
Description
Hi Team,
I am trying to upgrade my applications spring boot from 2.x to 3.x and facing weird errors.
If I use spring boot 3.3.3 parent pom and spring-context (6.1.x), I am facing below issue:
Exception in thread "main" java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:569)
at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:102)
at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:64)
at org.springframework.boot.loader.launch.JarLauncher.main(JarLauncher.java:40)
Caused by: java.lang.IllegalStateException: java.lang.VerifyError: Bad type on operand stack
Exception Details:
Location:
org/springframework/context/annotation/ConfigurationClassEnhancer$BeanFactoryAwareGeneratorStrategy.transform(Lorg/springframework/cglib/core/ClassGenerator;)Lorg/springframework/cglib/core/ClassGenerator; @15: invokespecial
Reason:
Type 'org/springframework/context/annotation/ConfigurationClassEnhancer$BeanFactoryAwareGeneratorStrategy$1' (current frame, stack[3]) is not assignable to 'org/springframework/cglib/transform/ClassTransformer'
Current Frame:
bci: @15
flags: { }
locals: { 'org/springframework/context/annotation/ConfigurationClassEnhancer$BeanFactoryAwareGeneratorStrategy', 'org/springframework/cglib/core/ClassGenerator', 'org/springframework/context/annotation/ConfigurationClassEnhancer$BeanFactoryAwareGeneratorStrategy$1' }
stack: { uninitialized 9, uninitialized 9, 'org/springframework/cglib/core/ClassGenerator', 'org/springframework/context/annotation/ConfigurationClassEnhancer$BeanFactoryAwareGeneratorStrategy$1' }
Bytecode:
0000000: bb00 0259 2ab7 0003 4dbb 0004 592b 2cb7
0000010: 0005 b0
at org.springframework.boot.SpringApplication.handleRunFailure(SpringApplication.java:825)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:345)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1363)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1352)
at com.fedex.sefs.adapter.csc.CSCAdapterApplication.main(CSCAdapterApplication.java:16)
... 7 more
Caused by: java.lang.VerifyError: Bad type on operand stack
Exception Details:
Location:
org/springframework/context/annotation/ConfigurationClassEnhancer$BeanFactoryAwareGeneratorStrategy.transform(Lorg/springframework/cglib/core/ClassGenerator;)Lorg/springframework/cglib/core/ClassGenerator; @15: invokespecial
Reason:
Type 'org/springframework/context/annotation/ConfigurationClassEnhancer$BeanFactoryAwareGeneratorStrategy$1' (current frame, stack[3]) is not assignable to 'org/springframework/cglib/transform/ClassTransformer'
Current Frame:
bci: @15
flags: { }
locals: { 'org/springframework/context/annotation/ConfigurationClassEnhancer$BeanFactoryAwareGeneratorStrategy', 'org/springframework/cglib/core/ClassGenerator', 'org/springframework/context/annotation/ConfigurationClassEnhancer$BeanFactoryAwareGeneratorStrategy$1' }
stack: { uninitialized 9, uninitialized 9, 'org/springframework/cglib/core/ClassGenerator', 'org/springframework/context/annotation/ConfigurationClassEnhancer$BeanFactoryAwareGeneratorStrategy$1' }
Bytecode:
0000000: bb00 0259 2ab7 0003 4dbb 0004 592b 2cb7
0000010: 0005 b0
at org.springframework.context.annotation.ConfigurationClassEnhancer.newEnhancer(ConfigurationClassEnhancer.java:126)
at org.springframework.context.annotation.ConfigurationClassEnhancer.enhance(ConfigurationClassEnhancer.java:109)
at org.springframework.context.annotation.ConfigurationClassPostProcessor.enhanceConfigurationClasses(ConfigurationClassPostProcessor.java:447)
at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanFactory(ConfigurationClassPostProcessor.java:268)
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:325)
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:147)
at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:746)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:564)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:335)
... 10 more
and If I downgrade the spring-context to 6.0.x, I am able to fix above issue but facing another issue as below.
{"@timestamp":"2024-09-19T17:25:25.932+05:30","level":"ERROR","thread_name":"main","logger_name":"org.springframework.boot.SpringApplication","message":"Application run failed","stack_trace":"j.l.ClassNotFoundException: org.springframework.scheduling.concurrent.SimpleAsyncTaskScheduler\r\n\tat j.net.URLClassLoader.findClass(URLClassLoader.java:445)\r\n\tat j.lang.ClassLoader.loadClass(ClassLoader.java:592)\r\n\tat o.s.b.l.n.p.j.JarUrlClassLoader.loadClass(JarUrlClassLoader.java:107)\r\n\tat o.s.b.l.l.LaunchedClassLoader.loadClass(LaunchedClassLoader.java:91)\r\n\tat j.lang.ClassLoader.loadClass(ClassLoader.java:525)\r\n\t... 44 common frames omitted\r\nWrapped by: j.l.NoClassDefFoundError: org/springframework/scheduling/concurrent/SimpleAsyncTaskScheduler\r\n\tat java.lang.Class.getDeclaredMethods0(Class.java)\r\n\tat java.lang.Class.privateGetDeclaredMethods(Class.java:3402)\r\n\tat java.lang.Class.getDeclaredMethods(Class.java:2504)\r\n\tat o.s.u.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:465)\r\n\t... 40 common frames omitted\r\nWrapped by: j.l.IllegalStateException: Failed to introspect Class [org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$TaskSchedulerConfiguration] from ClassLoader [org.springframework.boot.loader.launch.LaunchedClassLoader@50040f0c]\r\n\tat o.s.u.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:483)\r\n\tat o.s.u.ReflectionUtils.doWithMethods(ReflectionUtils.java:360)\r\n\tat o.s.u.ReflectionUtils.getUniqueDeclaredMethods(ReflectionUtils.java:417)\r\n\tat o.s.b.f.s.AbstractAutowireCapableBeanFactory.lambda$getTypeForFactoryMethod$2(AbstractAutowireCapableBeanFactory.java:765)\r\n\tat j.u.c.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1708)\r\n\tat o.s.b.f.s.AbstractAutowireCapableBeanFactory.getTypeForFactoryMethod(AbstractAutowireCapableBeanFactory.java:764)\r\n\tat o.s.b.f.s.AbstractAutowireCapableBeanFactory.determineTargetType(AbstractAutowireCapableBeanFactory.java:703)\r\n\tat o.s.b.f.s.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:674)\r\n\tat o.s.b.f.s.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1684)\r\n\tat o.s.b.f.s.DefaultListableBeanFactory.doGetBeanNamesForType(DefaultListableBeanFactory.java:570)\r\n\t... 7 fra...\r\n"}
As I checked the class TaskSchedulingConfigurations$TaskSchedulerConfiguration, the class org.springframework.scheduling.concurrent.SimpleAsyncTaskScheduler is missing from the package.
Please suggest how to get over it? If it is a bug, please let me know the workaround until it is fixed.
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<exclusions>
<exclusion>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.5.7</version>
<exclusions>
<exclusion>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.5.7</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-websocket</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-websocket</artifactId>
<version>9.0.62</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<exclusions>
<exclusion>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
</exclusion>
<exclusion>
<groupId>org.codehaus.jettison</groupId>
<artifactId>jettison</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.20</version>
</dependency>
<dependency>
<groupId>org.codehaus.jettison</groupId>
<artifactId>jettison</artifactId>
<version>1.5.4</version>
</dependency>
<dependency>
<groupId>com.fasterxml.woodstox</groupId>
<artifactId>woodstox-core</artifactId>
<version>6.4.0</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.retry</groupId>
<artifactId>spring-retry</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</dependency>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>3.3.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>${commons-beanutils.version}</version>
</dependency>
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>7.2</version>
</dependency>
<dependency>
<groupId>javax.interceptor</groupId>
<artifactId>javax.interceptor-api</artifactId>
<version>1.2.2</version>
</dependency>
<dependency>
<groupId>com.github.jnr</groupId>
<artifactId>jnr-posix</artifactId>
<version>3.1.8</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.13</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.5.13</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.security.oauth</groupId>
<artifactId>spring-security-oauth2</artifactId>
<version>2.3.4.RELEASE</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>6.1.1</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>6.1.1</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.5</version>
</dependency>
<dependency>
<groupId>xml-apis</groupId>
<artifactId>xml-apis</artifactId>
<version>1.4.01</version>
</dependency>
<!-- Common JMS -->
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.3.4</version>
</dependency>
<dependency>
<groupId>com.datastax.dse</groupId>
<artifactId>dse-java-driver-core</artifactId>
<version>1.9.0</version>
</dependency>
<dependency>
<groupId>com.datastax.dse</groupId>
<artifactId>dse-java-driver-mapping</artifactId>
<version>1.9.0</version>
</dependency>
<dependency>
<groupId>org.lz4</groupId>
<artifactId>lz4-java</artifactId>
<version>1.4.0</version>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk</artifactId>
<version>1.11.711</version>
</dependency>
<dependency>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>8.0.1.Final</version>
</dependency>
</dependencies>