Spring Boot 3.1.4中JpaRepository无法访问ListCrudRepository问题求助
问题解决:Spring Boot 3.1.4下JpaRepository无法访问ListCrudRepository
问题描述
升级到Spring Boot 3.1.4后,使用JpaRepository时出现错误:Cannot access org.springframework.data.repository.ListCrudRepository,不愿回退到2.7.8版本。
原因分析
Spring Boot 3.x全面切换到Jakarta EE规范,彻底替代了旧的Java EE(javax.*包体系)。你的pom.xml中仍在使用Java EE的javax.servlet-api依赖,这会和Spring Boot 3的Jakarta体系依赖产生冲突,进而导致Spring Data JPA核心接口(比如ListCrudRepository)无法正常加载。
解决步骤
- 替换
javax.servlet-api为Jakarta版本的jakarta.servlet-api - 执行Maven的
clean和compile命令,清理旧依赖并重新构建 - 检查项目中所有旧的
javax.*相关依赖,全部替换为jakarta.*
修改后的pom.xml关键部分
<!-- 替换原有的javax.servlet-api依赖 --> <dependency> <groupId>jakarta.servlet</groupId> <artifactId>jakarta.servlet-api</artifactId> <version>6.0.15</version> <scope>provided</scope> </dependency>
完整修改后的pom.xml:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.1.4</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.elijahukeme.onlinelearningappbackend</groupId> <artifactId>Online-Learning-App-Backend</artifactId> <version>0.0.1-SNAPSHOT</version> <name>Online-Learning-App-Backend</name> <description>Demo project for Spring Boot</description> <properties> <java.version>17</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <!-- 替换为Jakarta版本的Servlet API --> <dependency> <groupId>jakarta.servlet</groupId> <artifactId>jakarta.servlet-api</artifactId> <version>6.0.15</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclude> </excludes> </configuration> </plugin> </plugins> </build> </project>
验证
修改后重新启动项目,JpaRepository相关接口即可正常加载,错误提示消失。
内容的提问来源于stack exchange,提问作者Ukeme Elijah
相关产品推荐
相关产品推荐

