Spring Boot集成Keycloak时找不到KeycloakSpringBootConfigResolver类
问题:找不到
org.keycloak.adapters.springboot.KeycloakSpringBootConfigResolver类 我正在搭建Spring Boot(2.7.10)与Keycloak(16.1.0)的集成环境,但编译时提示找不到org.keycloak.adapters.springboot.KeycloakSpringBootConfigResolver类。
配置类路径:src/main/java/com/example/tutorial/config/KeyCloakConfiguration.java
package com.example.tutorial.config; import org.keycloak.adapters.KeycloakConfigResolver; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.keycloak.adapters.springboot.KeycloakSpringBootConfigResolver; @Configuration public class KeyCloakConfiguration { @Bean public KeycloakConfigResolver KeycloakConfigResolver() { return new KeycloakSpringBootConfigResolver(); } }
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>2.7.10</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.example</groupId> <artifactId>tutorial</artifactId> <version>0.0.1-SNAPSHOT</version> <name>tutorial</name> <description>Tutorial project for Spring Boot</description> <properties> <java.version>11</java.version> <spring-security.version>5.6.1</spring-security.version> <spring.version>5.3.9</spring.version> </properties> <dependencies> <!-- Spring Security dependencies --> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-core</artifactId> <version>${spring-security.version}</version> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-web</artifactId> <version>${spring-security.version}</version> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-config</artifactId> <version>${spring-security.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <!-- Other dependencies --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.22</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.keycloak</groupId> <artifactId>keycloak-core</artifactId> <version>16.1.0</version> </dependency> <dependency> <groupId>org.keycloak</groupId> <artifactId>keycloak-common</artifactId> <version>16.1.0</version> </dependency> <dependency> <groupId>org.keycloak</groupId> <artifactId>keycloak-spring-boot-starter</artifactId> <version>16.1.0</version> <exclusions> <exclusion> <groupId>org.keycloak</groupId> <artifactId>keycloak-spring-boot-2-adapter</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.keycloak</groupId> <artifactId>keycloak-admin-client</artifactId> <version>16.1.0</version> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.keycloak.bom</groupId> <artifactId>keycloak-adapter-bom</artifactId> <version>16.1.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
我已经执行过mvn clean install -U -DskipTests,也在IntelliJ中刷新了Maven依赖,但问题仍未解决。
解决方案
核心原因
你在keycloak-spring-boot-starter中排除了keycloak-spring-boot-2-adapter依赖,而org.keycloak.adapters.springboot.KeycloakSpringBootConfigResolver类正是定义在这个适配器模块里的。
修复步骤
- 移除
keycloak-spring-boot-starter中的排除配置,修改后的依赖片段如下:
<dependency> <groupId>org.keycloak</groupId> <artifactId>keycloak-spring-boot-starter</artifactId> <version>16.1.0</version> <!-- 删除原有的exclusions节点 --> </dependency>
- 重新执行Maven命令刷新依赖:
mvn clean install -U -DskipTests
- 在IntelliJ中再次执行
Maven > Reload Project,确保依赖被正确加载。
额外优化建议
- 你手动指定了
spring-security和spring-web的版本,这可能与Spring Boot父依赖管理的版本冲突。建议移除这些手动版本声明,直接使用Spring Boot父依赖提供的版本,避免潜在的兼容性问题。 - Keycloak 16.1.0属于较旧版本,后续可以考虑升级到更稳定的新版本(比如20+),同时注意与Spring Boot版本的兼容性匹配。
内容的提问来源于stack exchange,提问作者fudu
相关产品推荐
相关产品推荐

