SpringBoot整合Zipkin与Eureka Server启动报错及页面无法访问问题
问题:SpringBoot Eureka Server整合Zipkin追踪时启动报错,版本适配异常
报错信息
java.lang.IllegalArgumentException: Could not find class [org.springframework.cloud.client.loadbalancer.LoadBalancerEagerLoadProperties] at org.springframework.util.ClassUtils.resolveClassName(ClassUtils.java:333) ~[spring-core-6.0.3.jar:6.0.3] at org.springframework.core.annotation.TypeMappedAnnotation.adapt(TypeMappedAnnotation.java:465) ~[spring-core-6.0.3.jar:6.0.3] at org.springframework.core.annotation.TypeMappedAnnotation.getValue(TypeMappedAnnotation.java:390) ~[spring-core-6.0.3.jar:6.0.3] at org.springframework.core.annotation.TypeMappedAnnotation.asMap(TypeMappedAnnotation.java:278) ~[spring-core-6.0.3.jar:6.0.3] at org.springframework.core.annotation.AbstractMergedAnnotation.asAnnotationAttributes(AbstractMergedAnnotation.java:193) ~[spring-core-6.0.3.jar:6.0.3] at org.springframework.core.type.AnnotatedTypeMetadata.getAnnotationAttributes(AnnotatedTypeMetadata.java:106) ~[spring-core-6.0.3.jar:6.0.3] at org.springframework.core.type.AnnotatedTypeMetadata.getAnnotationAttributes(AnnotatedTypeMetadata.java:81) ~[spring-core-6.0.3.jar:6.0.3] at org.springframework.context.annotation.AnnotationConfigUtils.attributesFor(AnnotationConfigUtils.java:301) ~[spring-context-6.0.3.jar:6.0.3]
当前POM配置
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.7</maven.compiler.source> <maven.compiler.target>1.7</maven.compiler.target> <spring.boot.dependencies.version>3.0.1</spring.boot.dependencies.version> <spring.cloud-version>2020.0.3</spring.cloud-version> </properties> <dependencies> <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-netflix-eureka-server --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> <version>4.0.0</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-sleuth</artifactId> <version>3.1.6</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-sleuth-zipkin</artifactId> <version>3.1.6</version> </dependency> </dependencies>
当前application.properties配置
spring.application.name=eureka-server server.port=8761 eureka.client.fetch-registry=false eureka.client.register-with-eureka=false log.level.root=debug spring.zipkin.base-url=http://localhost:9411
问题分析
核心问题是版本完全不兼容:
- Spring Boot 3.0.x要求JDK 17,你用了JDK 1.7,底层类库无法兼容
- Spring Boot 3.0.x对应的Spring Cloud版本是2022.0.x,你用了2020.0.3,两者依赖的组件版本差异极大
- Spring Cloud Sleuth 3.1.6已停止维护,且不兼容Spring Boot 3,官方已替换为Micrometer Tracing
解决方案
1. 统一版本并调整JDK要求
修改POM的properties部分,适配Spring Boot 3的版本规范:
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> <spring-boot.version>3.0.1</spring-boot.version> <spring-cloud.version>2022.0.4</spring-cloud.version> <!-- 适配Spring Boot 3.0.x --> </properties>
2. 添加Spring Cloud依赖管理
在POM中加入dependencyManagement,统一管理Spring Cloud组件版本,避免手动指定版本导致冲突:
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${spring-boot.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
3. 替换Sleuth为Micrometer Tracing
移除原有的Sleuth依赖,改用适配Spring Boot 3的Micrometer组件实现Zipkin追踪:
<dependencies> <!-- Eureka Server --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> <!-- Micrometer Tracing + Zipkin --> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-tracing-bridge-brave</artifactId> </dependency> <dependency> <groupId>io.zipkin.reporter2</groupId> <artifactId>zipkin-reporter-brave</artifactId> </dependency> </dependencies>
4. 验证启动与访问
- 确保本地已启动Zipkin服务(端口9411)
- 启动Eureka Server,访问
http://localhost:8761,此时应正常显示Eureka控制台主页 - 查看日志,确认追踪数据正常上报到Zipkin
内容的提问来源于stack exchange,提问作者Alex So
相关产品推荐
相关产品推荐

