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

Spring Boot项目已加依赖仍报java: package jakarta.persistence does not exist错误

解决Spring Boot编译时“java: package jakarta.persistence does not exist”错误

问题根源分析

  1. 依赖作用域错误:你手动添加的jakarta.persistence-api依赖设置了<scope>provided</scope>,这个作用域表示编译阶段不会将该依赖纳入Classpath,仅在运行时由容器提供,但Spring Boot是嵌入式容器架构,编译阶段需要该依赖参与编译,所以导致找不到包。
  2. 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的运行要求。
  3. 重复依赖冗余:spring-boot-starter-data-jpa已经默认引入了适配Spring Boot版本的jakarta.persistence-api,手动添加的依赖不仅多余,还可能因版本不一致引发冲突。

解决方案

  1. 移除冗余的jakarta.persistence-api依赖
    删除pom中这段依赖配置:

    <dependency>
      <groupId>jakarta.persistence</groupId>
      <artifactId>jakarta.persistence-api</artifactId>
      <version>3.0.0</version>
      <scope>provided</scope>
    </dependency>
    
  2. 修正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>
    
  3. 清理Maven缓存并重新编译
    执行以下命令清理本地缓存并重新构建项目:

    mvn clean install -U
    

额外注意点

  • spring-boot-starter-web中排除hibernate-core的操作可能会影响JPA功能,如果没有特殊需求,建议移除该排除项,避免后续出现其他JPA相关错误。
  • 确保你的开发环境(如IDEA/Eclipse)已经配置了Java 17的SDK,避免IDE编译时依然使用旧版本Java。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 00:26:08