Spring Boot项目已加依赖仍报java: package jakarta.persistence does not exist错误
解决Spring Boot编译时“java: package jakarta.persistence does not exist”错误
问题根源分析
- 依赖作用域错误:你手动添加的
jakarta.persistence-api依赖设置了<scope>provided</scope>,这个作用域表示编译阶段不会将该依赖纳入Classpath,仅在运行时由容器提供,但Spring Boot是嵌入式容器架构,编译阶段需要该依赖参与编译,所以导致找不到包。 - Java版本不兼容:Spring Boot 3.x系列要求最低Java版本为17,但你的pom中指定了
<maven.compiler.source>1.7</maven.compiler.source>和<maven.compiler.target>1.7</maven.compiler.target>,版本过低不仅会引发依赖兼容问题,也不符合Spring Boot 3.x的运行要求。 - 重复依赖冗余:
spring-boot-starter-data-jpa已经默认引入了适配Spring Boot版本的jakarta.persistence-api,手动添加的依赖不仅多余,还可能因版本不一致引发冲突。
解决方案
移除冗余的jakarta.persistence-api依赖
删除pom中这段依赖配置:<dependency> <groupId>jakarta.persistence</groupId> <artifactId>jakarta.persistence-api</artifactId> <version>3.0.0</version> <scope>provided</scope> </dependency>修正Java版本配置
将pom中的编译版本修改为17,与Spring Boot 3.1.3兼容:<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> </properties>清理Maven缓存并重新编译
执行以下命令清理本地缓存并重新构建项目:mvn clean install -U
额外注意点
spring-boot-starter-web中排除hibernate-core的操作可能会影响JPA功能,如果没有特殊需求,建议移除该排除项,避免后续出现其他JPA相关错误。- 确保你的开发环境(如IDEA/Eclipse)已经配置了Java 17的SDK,避免IDE编译时依然使用旧版本Java。
内容的提问来源于stack exchange,提问作者Nikhil Kumar
相关产品推荐
相关产品推荐

