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

本地运行正常的Spring Boot应用部署K8s时出现类找不到异常

问题

Spring Boot应用在本地环境可正常启动运行,但部署到Kubernetes集群时抛出NoClassDefFoundError,提示找不到org.springframework.core.env.Profiles类。

错误信息

java.lang.NoClassDefFoundError: org/springframework/core/env/Profiles
        at org.springframework.cloud.kubernetes.config.PropertySourceUtils.lambda$null$3(PropertySourceUtils.java:69)
        at org.springframework.beans.factory.config.YamlProcessor.process(YamlProcessor.java:239)
        at org.springframework.beans.factory.config.YamlProcessor.process(YamlProcessor.java:167)
        at org.springframework.beans.factory.config.YamlProcessor.process(YamlProcessor.java:139)
        at org.springframework.beans.factory.config.YamlPropertiesFactoryBean.createProperties(YamlPropertiesFactoryBean.java:135)
        at org.springframework.beans.factory.config.YamlPropertiesFactoryBean.getObject(YamlPropertiesFactoryBean.java:115)
        at org.springframework.cloud.kubernetes.config.PropertySourceUtils.lambda$yamlParserGenerator$4(PropertySourceUtils.java:77)
        at java.util.function.Function.lambda$andThen$1(Function.java:88)
        at org.springframework.cloud.kubernetes.config.ConfigMapPropertySource.processAllEntries(ConfigMapPropertySource.java:149)
        at org.springframework.cloud.kubernetes.config.ConfigMapPropertySource.getData(ConfigMapPropertySource.java:100)
        at org.springframework.cloud.kubernetes.config.ConfigMapPropertySource.<init>(ConfigMapPropertySource.java:78)
        at org.springframework.cloud.kubernetes.config.ConfigMapPropertySourceLocator.getMapPropertySourceForSingleConfigMap(ConfigMapPropertySourceLocator.java:96)
        at org.springframework.cloud.kubernetes.config.ConfigMapPropertySourceLocator.lambda$locate$0(ConfigMapPropertySourceLocator.java:79)
        at java.util.ArrayList.forEach(ArrayList.java:1259)
        at org.springframework.cloud.kubernetes.config.ConfigMapPropertySourceLocator.locate(ConfigMapPropertySourceLocator.java:78)
        at org.springframework.cloud.bootstrap.config.PropertySourceBootstrapConfiguration.initialize(PropertySourceBootstrapConfiguration.java:94)
        at org.springframework.boot.SpringApplication.applyInitializers(SpringApplication.java:628)
        at org.springframework.boot.SpringApplication.prepareContext(SpringApplication.java:364)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:305)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1242)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1230)
        at com.daimler.daivb.msl.MbappsSnapLocalSearchServiceApplication.main(MbappsSnapLocalSearchServiceApplication.java:30)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
        at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)
Caused by: java.lang.ClassNotFoundException: org.springframework.core.env.Profiles
        at java.net.URLClassLoader.findClass(URLClassLoader.java:387)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:419)
        at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:93)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:352)

应用依赖列表

  • spring-boot-starter-web - 2.0.8.RELEASE
  • gson - 2.3.1
  • json-lib - 2.3
  • spring-cloud-starter-kubernetes-config -1.1.10.RELEASE
  • json - 20230227
  • xmlrpc-client - 3.1.3
  • spring-security-oauth2-autoconfigure - 2.0.8.RELEASE
  • spring-security-config
  • spring-security-web
  • spring-cloud-starter-openfeign - 2.0.0.RELEASE
  • spring-cloud-starter-netflix-ribbon - 2.0.0.RELEASE
  • spring-boot-starter-actuator
  • commons-lang3 - 3.8.1
  • lombok
  • spring-cloud-starter-config - 2.0.3.RELEASE
  • micrometer-registry-prometheus - 1.2.2
  • micrometer-core - 1.2.2
  • spring-boot-starter-test
  • spring-cloud-dependencies - Finchley.SR3

问题原因及解决方法

核心原因

  1. org.springframework.core.env.Profiles类是Spring Framework 5.1版本才新增的,但你使用的Spring Boot 2.0.8.RELEASE依赖的是Spring Framework 5.0.x版本,版本不匹配导致类缺失。
  2. Spring Cloud Finchley.SR3属于Finchley分支,对应的Spring Boot版本是2.0.x,而你使用的spring-cloud-starter-kubernetes-config 1.1.10.RELEASE属于Greenwich分支,两个分支依赖的Spring Framework版本不一致,引发依赖冲突。

解决步骤

  1. 统一Spring Cloud组件版本:
    将spring-cloud-starter-kubernetes-config改为Finchley分支兼容的版本(1.0.x.RELEASE),例如:
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-kubernetes-config</artifactId>
        <version>1.0.4.RELEASE</version>
    </dependency>
    
  2. 检查并修复依赖树:
    使用依赖分析工具确认所有Spring Framework相关依赖版本统一为5.0.x:
    • Maven执行:mvn dependency:tree
    • Gradle执行:./gradlew dependencies
      若发现高版本Spring Framework依赖被引入,手动在对应依赖中排除冲突模块。
  3. 验证打包完整性:
    确保使用Spring Boot官方插件(spring-boot-maven-plugin或spring-boot-gradle-plugin)打包可执行Jar,保证所有依赖被正确打包到Jar包中,避免集群环境下依赖缺失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 10:14:54