无法引入spring-boot-starter-oauth2-client依赖的问题求助
Spring Boot引入oauth2-client依赖失败及运行时类缺失问题
依赖找不到问题
尝试在pom.xml中引入spring-boot-starter-oauth2-client依赖,更换多个版本后均提示:
Dependency 'org.springframework.boot:spring-boot-starter-oauth2-client:3.3.1' not found
注:错误中的版本号会随使用的版本变化
项目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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.lumber</groupId> <artifactId>lumber-integration</artifactId> <version>0.0.1-SNAPSHOT</version> <!-- Parent POM for Spring Boot --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.3.1</version> <!-- Use the appropriate Spring Boot version --> <relativePath/> <!-- lookup parent from repository --> </parent> <!-- Project properties --> <properties> <java.version>11</java.version> </properties> <!-- Dependencies --> <dependencies> <!-- Spring Boot Starter dependencies --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-oauth2-client</artifactId> <version>3.3.1</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!-- Micrometer core --> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-core</artifactId> <version>1.13.1</version> <!-- Adjust version as per availability --> </dependency> <!-- Lombok for easier Java development --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.24</version> <scope>provided</scope> </dependency> </dependencies> <!-- Dependency management to ensure compatible versions --> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>3.3.1</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <!-- Build plugins --> <build> <plugins> <!-- Spring Boot Maven plugin --> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>3.3.1</version> </plugin> </plugins> </build> <!-- Repositories --> <repositories> <repository> <id>central</id> <url>https://repo.maven.apache.org/maven2/</url> </repository> </repositories> </project>
错误指向该依赖配置:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-oauth2-client</artifactId> </dependency>
尝试dependencyManagement后的运行错误
使用dependencyManagement消除了依赖找不到的错误,但运行时出现以下异常:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'securityFilterChain' defined in class path resource
以及
java.lang.NoClassDefFoundError: org/springframework/security/oauth2/client/web/OAuth2LoginAuthenticationFilter
已尝试相关解决方案但未解决问题,寻求帮助。
解决方案
1. 修正依赖配置,移除手动指定的版本号
项目已继承spring-boot-starter-parent,其dependencyManagement已统一管理所有starter依赖版本,无需手动指定spring-boot-starter-oauth2-client的版本号,手动指定可能引发版本冲突或仓库拉取异常。修改后的依赖配置应为:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-oauth2-client</artifactId> </dependency>
2. 清理Maven缓存并重新拉取依赖
执行以下Maven命令,清理本地仓库中可能损坏或不完整的依赖文件:
mvn clean install -U
-U参数强制Maven更新快照依赖和远程仓库元数据。
3. 调整Java版本以兼容Spring Boot 3.x
Spring Boot 3.x要求Java版本至少为17,当前pom.xml指定的Java 11会导致严重兼容性问题,包括类缺失、依赖加载失败等。修改java.version为17及以上:
<properties> <java.version>17</java.version> </properties>
4. 移除重复的dependencyManagement配置
项目已继承spring-boot-starter-parent,其已包含spring-boot-dependencies的依赖管理,无需手动导入,重复配置会导致版本管理混乱,建议移除整个dependencyManagement块。
5. 验证securityFilterChain配置
若上述步骤完成后仍出现securityFilterChain创建失败,检查Security配置类,确保正确引入OAuth2客户端相关配置,示例如下:
@Configuration @EnableWebSecurity public class SecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .authorizeHttpRequests(auth -> auth .anyRequest().authenticated() ) .oauth2Login(Customizer.withDefaults()); // 启用OAuth2登录 return http.build(); } }
内容的提问来源于stack exchange,提问作者AppleDev3
相关产品推荐
相关产品推荐

