Не удалось добавить пользователя с помощью keycloak-admin-client в Keycloak из-за неизвестного ресурса

Я попытался использовать keycloak-admin-client в коде Java, как показано ниже, но затем получил исключения. Судя по исключениям, он не смог создать URL-адрес API даже до того, как достиг Keycloak. Кто-нибудь знает, почему это произошло?

Я запускаю Keycloak внутри док-контейнера и открываю порт 8078.

public static void main(String ... args) {
        Keycloak kc = KeycloakBuilder.builder()
                .serverUrl("http://localhost:8078/auth")
                .realm("master")
                .username("admin")
                .password("admin")
                .clientId("admin-cli")
                .resteasyClient(new ResteasyClientBuilder().connectionPoolSize(10).build())
                .build();
        CredentialRepresentation credential = new CredentialRepresentation();
        credential.setType(CredentialRepresentation.PASSWORD);
        credential.setValue("test123");
        UserRepresentation user = new UserRepresentation();
        user.setUsername("testuser");
        user.setFirstName("Test");
        user.setLastName("User");
        user.setEnabled(true);
        user.setCredentials(Arrays.asList(credential));
        kc.realm("master").users().create(user);
}

Исключение:

java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:294)
    at java.lang.Thread.run(Thread.java:745)
Caused by: 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:158)
    at org.jboss.resteasy.client.jaxrs.internal.proxy.SubResourceInvoker.invoke(SubResourceInvoker.java:65)
    at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientProxy.invoke(ClientProxy.java:76)
    at com.sun.proxy.$Proxy39.realm(Unknown Source)
    at org.keycloak.admin.client.Keycloak.realm(Keycloak.java:71)
    at com.gallagher.security.keycloak.client.Program.main(Program.java:76)

person Zhiwei liu    schedule 12.07.2016    source источник
comment
Такая же проблема сейчас. Есть ли намек на решение. Я вижу ошибку. Но не знаю, как это исправить.   -  person Gregor Sklorz    schedule 16.05.2018


Ответы (1)


Caused by: java.lang.NoSuchMethodError: javax.ws.rs.core.UriBuilder.resolveTemplates(Ljava/util/Map;)Ljavax/ws/rs/core/UriBuilder;    

Эта ошибка обычно указывает на то, что у вас есть 2 версии класса на пути.
Если вы используете структуру зависимостей, такую ​​как Maven, вы можете убедиться, что в иерархию включены правильные библиотеки
Этот класс — «javax.ws.rs .core.UriBuilder"

person Jeremy    schedule 12.07.2016
comment
Спасибо, Джереми, да, вы правы, класс был дважды включен какой-то другой зависимостью. Проблема устранена. - person Zhiwei liu; 12.07.2016