You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SpringBoot应用构建正常但STS启动失败,抛ConcurrentModificationException

SpringBoot应用启动抛出ConcurrentModificationException异常

问题概述

SpringBoot应用构建过程正常,但在STS中以SpringBoot应用方式运行时启动失败,抛出java.util.ConcurrentModificationException异常。

使用的pom.xml配置

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.3.3.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

<groupId>com.ge.aviation.det</groupId>
<artifactId>spcsa-scenario-service</artifactId>
<version>1.0.218</version>
<packaging>jar</packaging>
<name>spcsa-scenario-service</name>
<description>SPCSA Scenario management services</description>
<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java.version>1.8</java.version>
    <build.number>SNAPSHOT</build.number>
    <aws.sdk.version>1.11.710</aws.sdk.version>   
</properties>

主类代码

import org.springframework.boot.SpringApplication;
import org.springframework.boot.actuate.health.Health;
import org.springframework.boot.actuate.health.HealthIndicator;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

/**
 * This is the main class of scenario services
 *
 * @author 385220
 */
//@SpringBootApplication(scanBasePackages="com.ge.aviation.det")
@Configuration
@EnableAutoConfiguration
@ComponentScan({"com.ge.aviation.det"})
@ImportResource({"classpath*:META-INF/spring/security-context.xml", "classpath*:META-INF/spring/sfdc-quote-config.xml"})
@EnableTransactionManagement
@EnableAsync
@RestController
public class DetQuoteServiceApplication {

    public static void main(String[] args) {
        SpringApplication.run(DetQuoteServiceApplication.class, args);
    }

    @Bean
    public HealthIndicator quoteHealthIndicator() {
        return () -> Health.up().withDetail("spcsa-quote-service", "up").build();
    }

    @RequestMapping(value ="/check", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity<String> getCheckStatus() {
        return new ResponseEntity<>("success", HttpStatus.OK);
    }
}

本地运行报错信息

.   ____          _            __ _ _
 /\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
[32m :: Spring Boot :: [39m      [2m (v1.3.3.RELEASE)[0;39m

[2m2024-10-29 14:46:48.132[0;39m [32m INFO[0;39m [35m93476[0;39m [2m---[0;39m [2m[           main][0;39m [36mc.g.a.det.DetQuoteServiceApplication    [0;39m [2m:[0;39m Starting DetQuoteServiceApplication on G2B3G9Y3E with PID 93476 (C:\Users\502622018\cpq-workspace\spcsa-quote-service\target\classes started by 502622018 in C:\Users\502622018\cpq-workspace\spcsa-quote-service)
[2m2024-10-29 14:46:48.135[0;39m [32m INFO[0;39m [35m93476[0;39m [2m---[0;39m [2m[           main][0;39m [36mc.g.a.det.DetQuoteServiceApplication    [0;39m [2m:[0;39m The following profiles are active: local
[2m2024-10-29 14:46:48.168[0;39m [32m INFO[0;39m [35m93476[0;39m [2m---[0;39m [2m[           main][0;39m [36mationConfigEmbeddedWebApplicationContext[0;39m [2m:[0;39m Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@2e4b8173: startup date [Tue Oct 29 14:46:48 EDT 2024]; root of context hierarchy
[2m2024-10-29 14:46:49.369[0;39m [31mERROR[0;39m [35m93476[0;39m [2m---[0;39m [2m[           main][0;39m [36mo.s.boot.SpringApplication              [0;39m [2m:[0;39m Application startup failed

java.util.ConcurrentModificationException: null
    at java.util.LinkedList$ListItr.checkForComodification(LinkedList.java:966) ~[na:1.8.0_371]
    at java.util.LinkedList$ListItr.next(LinkedList.java:888) ~[na:1.8.0_371]
    at org.springframework.context.annotation.ConfigurationClassParser.processDeferredImportSelectors(ConfigurationClassParser.java:421) ~[spring-context-4.1.0.RELEASE.jar:4.1.0.RELEASE]
    at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:175) ~[spring-context-4.1.0.RELEASE.jar:4.1.0.RELEASE]
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:306) ~[spring-context-4.1.0.RELEASE.jar:4.1.0.RELEASE]
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:239) ~[spring-context-4.1.0.RELEASE.jar:4.1.0.RELEASE]
    at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:254) ~[spring-context-4.1.0.RELEASE.jar:4.1.0.RELEASE]
    at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:94) ~[spring-context-4.1.0.RELEASE.jar:4.1.0.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:606) ~[spring-context-4.1.0.RELEASE.jar:4.1.0.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:462) ~[spring-context-4.1.0.RELEASE.jar:4.1.0.RELEASE]
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118) ~[spring-boot-1.3.3.RELEASE.jar:1.3.3.RELEASE]
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:766) [spring-boot-1.3.3.RELEASE.jar:1.3.3.RELEASE]
    at org.springframework.boot.SpringApplication.createAndRefreshContext(SpringApplication.java:361) [spring-boot-1.3.3.RELEASE.jar:1.3.3.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) [spring-boot-1.3.3.RELEASE.jar:1.3.3.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1191) [spring-boot-1.3.3.RELEASE.jar:1.3.3.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1180) [spring-boot-1.3.3.RELEASE.jar:1.3.3.RELEASE]
    at com.ge.aviation.det.DetQuoteServiceApplication.main(DetQuoteServiceApplication.java:34) [classes/:na]

[2m2024-10-29 14:46:49.370[0;39m [32m INFO[0;39m [35m93476[0;39m [2m---[0;39m [2m[           main][0;39m [36m.b.l.ClasspathLoggingApplicationListener[0;39m [2m:[0;39m Application failed to start with classpath: 

异常堆栈跟踪详情

spcsa-quote-service - DetQuoteServiceApplication [Spring Boot App]  
    com.ge.aviation.det.DetQuoteServiceApplication at localhost:61216   
        Thread [main] (Suspended (exception ConcurrentModificationException))   
            owns: Object  (id=41)   
            LinkedList$ListItr.checkForComodification() line: 966 [local variables unavailable] 
            LinkedList$ListItr.next() line: 888 [local variables unavailable]   
            ConfigurationClassParser.processDeferredImportSelectors() line: 421 
            ConfigurationClassParser.parse(Set<BeanDefinitionHolder>) line: 175 
            ConfigurationClassPostProcessor.processConfigBeanDefinitions(BeanDefinitionRegistry) line: 306  
            ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(BeanDefinitionRegistry) line: 239 
            PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(Collection<BeanDefinitionRegistryPostProcessor>, BeanDefinitionRegistry) line: 254 
            PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(ConfigurableListableBeanFactory, List<BeanFactoryPostProcessor>) line: 94 
            AnnotationConfigEmbeddedWebApplicationContext(AbstractApplicationContext).invokeBeanFactoryPostProcessors(ConfigurableListableBeanFactory) line: 606    
            AnnotationConfigEmbeddedWebApplicationContext(AbstractApplicationContext).refresh() line: 462   
            AnnotationConfigEmbeddedWebApplicationContext(EmbeddedWebApplicationContext).refresh() line: 118    
            SpringApplication.refresh(ApplicationContext) line: 766 
            SpringApplication.createAndRefreshContext(SpringApplicationRunListeners, ApplicationArguments) line: 361    
            SpringApplication.run(String...) line: 307  
            SpringApplication.run(Object[], String[]) line: 1191    
            SpringApplication.run(Object, String...) line: 1180 
            DetQuoteServiceApplication.main(String[]) line: 36  
    C:\Program Files\Java\jdk-1.8\bin\javaw.exe (Oct 29, 2024, 10:02:16 PM) [pid: 26548]    

解决方法

该异常发生在Spring配置类解析阶段,处理延迟导入选择器时触发了LinkedList的并发修改,可通过以下步骤解决:

  1. 清理IDE缓存与项目构建

    • 在STS中执行Project -> Clean清理项目编译文件
    • 右键项目选择Maven -> Update Project,勾选Force Update of Snapshots/Releases,更新依赖并重新构建
  2. 排查并修复依赖冲突

    • 执行mvn dependency:tree查看依赖树,检查是否有低版本spring-context(如报错中的4.1.0.RELEASE)被引入
    • 排除冲突的低版本Spring依赖,确保使用Spring Boot 1.3.3.RELEASE对应的Spring框架版本(应为4.2.5.RELEASE)
  3. 简化主类注解配置

    • 取消注释主类中的@SpringBootApplication(scanBasePackages="com.ge.aviation.det"),替换当前的@Configuration、@EnableAutoConfiguration和@ComponentScan组合注解,降低配置解析复杂度
  4. 检查导入的XML配置文件

    • 排查@ImportResource中指定的XML配置,确认是否存在动态修改Bean定义的逻辑或重复注册Bean的情况,这类操作可能触发并发修改异常
  5. 升级Spring Boot版本

    • Spring Boot 1.3.3.RELEASE是较旧版本,存在已知的配置解析bug,建议升级到1.3.x系列的最新稳定版本,或兼容Java 8的更高版本(如1.5.x系列),从根源解决底层框架问题

内容的提问来源于stack exchange,提问作者sromit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 17:47:02