Spring Boot启动报错:缺少jakarta.annotation.PostConstruct类求助
问题排查与解决
核心原因
你遇到的java.lang.NoClassDefFoundError: jakarta/annotation/PostConstruct是两个关键问题导致的:
- gRPC Starter版本不兼容Spring Boot 3.x:你使用的
net.devh:grpc-server-spring-boot-starter:2.15.0.RELEASE是适配Spring Boot 2.x的版本,该版本依赖旧的javax.annotationAPI,而Spring Boot 3.x已全面切换到Jakarta EE 9+的jakarta.annotationAPI,二者无法兼容。 - 手动添加的Jakarta Annotation版本错误:你添加的
jakarta.annotation:jakarta.annotation-api:1.3.5是过渡版本,Spring Boot 3.x的依赖管理已经内置了适配的jakarta.annotation-api(版本2.1.1左右),手动添加旧版本会引发依赖冲突,导致类加载异常。
解决步骤
1. 升级gRPC Starter版本
将gRPC Starter替换为适配Spring Boot 3.x的4.x系列版本,比如4.5.0(可根据需求选择最新兼容版本):
implementation 'net.devh:grpc-server-spring-boot-starter:4.5.0'
2. 移除手动添加的Jakarta Annotation依赖
删除dependencies中的这一行:
implementation 'jakarta.annotation:jakarta.annotation-api:1.3.5'
Spring Boot的spring-boot-starter-web等starter已通过依赖管理引入正确版本的jakarta.annotation-api,无需手动添加。
3. 清理缓存并重新构建
执行以下Gradle命令清理缓存并重新构建项目:
./gradlew clean build
修改后的完整Dependencies配置
dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'net.devh:grpc-server-spring-boot-starter:4.5.0' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' }
内容的提问来源于stack exchange,提问作者Mrnobody
相关产品推荐
相关产品推荐

