Возможно, у меня проблема с POM в приложении SpringBoot.
В настоящее время я пытаюсь получить доступ к своему серверу Keycloak с помощью "admin-client-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:
<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>
Ошибка возникает из модуля 'keycloak-admin-client'.
Теперь основной вопрос:
- В чем проблема?Или это действительно ошибка внутри версии 'keycloak-admin-client'?
Я не думаю, что приводит меня ко второму вопросу:
- Как я могуузнал, что мне нужно изменить в такой ситуации?
Заранее спасибо за все предложения.Прежде всего, я хочу научиться решать такие проблемы самостоятельно в будущем.
С уважением, Грегор
РЕДАКТИРОВАТЬ:
Ну, я шагдалее, но проблема все еще там.
POM, который я показываю вам здесь, это POM библиотеки, которая используется в других проектах.У этих Проектов есть «стартер начальной загрузки», которые используют версию «трикотаж»: 1.54.
Так что проблема кажется очевидной.Я добавил зависимость 'jersey 2.0.2' в окончательный проект 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.?
Только добавление зависимости, похоже, не помогает.