Gre*_*orz 6 spring-boot keycloak javax
我的 SpringBoot 应用程序中的 POM 可能有问题。
目前我正在尝试使用“admin-client-keycloak”访问我的 Keycloak 服务器
但是在通话中:
Response response = getInstance().realm(REALM).users().create(user);
Run Code Online (Sandbox Code Playgroud)
我得到错误:
java.lang.NoSuchMethodError: javax.ws.rs.core.UriBuilder.resolveTemplates(Ljava/util/Map;)Ljavax/ws/rs/core/UriBuilder;
at org.jboss.resteasy.client.jaxrs.internal.ClientWebTarget.resolveTemplates(ClientWebTarget.java:178) ~[resteasy-client-3.5.1.Final.jar:3.5.1.Final]
at org.jboss.resteasy.client.jaxrs.internal.proxy.SubResourceInvoker.invoke(SubResourceInvoker.java:65) ~[resteasy-client-3.5.1.Final.jar:3.5.1.Final]
at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientProxy.invoke(ClientProxy.java:76) ~[resteasy-client-3.5.1.Final.jar:3.5.1.Final]
at com.sun.proxy.$Proxy198.realm(Unknown Source) ~[na:na]
at org.keycloak.admin.client.Keycloak.realm(Keycloak.java:118) ~[keycloak-admin-client-3.4.3.Final.jar:3.4.3.Final]
Run Code Online (Sandbox Code Playgroud)
老实说:我不是 Maven 专家,而是从几个网络灵魂中将它拼接在一起,我希望有些部分仍然过时或什么的。
POM依赖:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>1.5.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>1.5.3.RELEASE</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>6.0.6</version>
<scope>runtime</scope>
</dependency>
<!-- Keycloak -->
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-admin-client</artifactId>
<version>3.4.3.Final</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-client</artifactId>
<version>3.5.1.Final</version>
</dependency>
<!-- JUnit -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>${junit.jupiter.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jersey</artifactId>
<version>2.0.2.RELEASE</version>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.keycloak.bom</groupId>
<artifactId>keycloak-adapter-bom</artifactId>
<version>3.4.3.Final</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
Run Code Online (Sandbox Code Playgroud)
错误来自“keycloak-admin-client”模块。
现在的主要问题是:
我想不是这导致我的第二个问题:
预先感谢所有建议。我主要想学习如何在未来自己解决这些问题。
亲切的问候格雷戈尔
编辑:
好吧,我更进一步,但问题仍然存在。
我在这里向您展示的 POM 是其他项目中使用的库的 POM。这些项目有一个'spring-Boot-starter',它使用'jersey'版本:1.54。
所以问题似乎很清楚。我在最终项目 POM 中添加了“jersey 2.0.2”依赖项
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jersey</artifactId>
<version>2.0.2.RELEASE</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
但问题仍然存在。如何强制 maven 使用 2.0.2 版本并覆盖 1.5.?
只添加依赖似乎没有帮助。
小智 15
其他一些依赖项使用不同版本的 lib jsr311-api。就我而言,它是尤里卡客户端。我刚刚在 pom 中添加了一个带有此依赖项的 exclude 并且它起作用了
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<exclusions>
<exclusion>
<groupId>javax.ws.rs</groupId>
<artifactId>jsr311-api</artifactId>
</exclusion>
</exclusions>
</dependency>
Run Code Online (Sandbox Code Playgroud)
请确保您的项目中存在UriBuilder类。并确保您的项目中仅存在一个UriBuilder类(版本)。(您的项目上可以有多个不同版本。)不同版本可以重叠。
向 pom 添加额外的依赖项(必须添加版本,对于 keycloak 3.0.0.Final => Resteasy dependentecies 3.5.0.Final 对我有用。必须遵守依赖项。)
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-admin-client</artifactId>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-client</artifactId>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jackson2-provider</artifactId>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)注意:如果您正在开发多层应用程序,这是我的建议。您可以将项目分层。您可以划分 Spring Boot Starter 应用程序和 keycloak 访问层。并使用这个新项目作为依赖项。
编辑,
请参阅由于“未知资源”而无法通过 keycloak-admin-client 将用户添加到 Keycloak
我希望这些能有所帮助。
归档时间: |
|
查看次数: |
3038 次 |
最近记录: |