我的SpringBoot App中的POM可能有问题。
目前我正在尝试使用。访问我的Keycloak服务器 "管理客户端 - keycloak"
但是在电话中:
Response response = getInstance().realm(REALM).users().create(user);
我收到错误:
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]
说实话:我不是Maven专家,而是从几个网络灵魂中将它拼接在一起,我希望某些部分仍然过时或者其他东西。
POM dependecys:
<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>
错误发生在&#39; keycloak-admin-client&#39;模块。
现在的主要问题是:
我想这不是第二个问题的原因:
提前感谢所有建议。我小学想要学习如何在将来解决这些问题。
亲切的问候 格里
修改
嗯,我更进一步,但问题仍然存在。
我在这里展示的POM是一个用于其他项目的库的POM。 这些项目有一个弹簧启动启动器&#39;正在使用&#39; jersey&#39;版本:1.54
所以问题似乎很明显。 我添加了&#39; jersey 2.0.2&#39;在最终项目POM中的依赖性
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jersey</artifactId>
<version>2.0.2.RELEASE</version>
</dependency>
但问题仍然存在。 如何强制maven使用2.0.2版本并覆盖1.5。?
只添加依赖似乎没有帮助。
答案 0 :(得分:8)
其他一些依赖项使用的是lib jsr311-api库的不同版本。就我而言,这是尤里卡的客户。我刚刚在pom中添加了具有这种依赖关系的排除对象,并且它起作用了
<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>
答案 1 :(得分:0)
请确保您的项目中存在 UriBuilder 类。并确保您的项目中只存在一个 UriBuilder 类(版本)。 (对于您的项目,它可以是多个版本。)不同的版本可以重叠。
为pom添加额外的依赖关系(必须添加版本,对于keycloak 3.0.0.Final =&gt; resteasy dependecies 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>
注意:如果您正在开发多层应用,这是我的建议。您可以将项目划分为图层。您可以划分您的spring boot starter app和keycloak访问层。并将这个新项目用作依赖。
编辑
请参阅Failed adding user by keycloak-admin-client to Keycloak due to "unknown resource"
我希望这些可以提供帮助。