【问题标题】:Spring Boot GraphQL Server with embedded Keycloak instance wont start带有嵌入式 Keycloak 实例的 Spring Boot GraphQL Server 无法启动
【发布时间】:2020-10-14 21:31:01
【问题描述】:

我真正尝试的是,用 Spring Boot 构建一个后端,这个后端分为两个模块。一个身份验证服务器(嵌入式 keycloak-server)和一个资源服务器(graphql-server)。

在那里我有一个名为 KeycloakService 的服务。该服务有许多公共方法来与嵌入式 keycloak 实例进行通信。每个方法在 graphql 模式中都有一个有意义的等价物来创造可能性,例如通过 graphql 突变创建新用户或角色。

auth-server 运行没有任何问题。

但是当我启动资源服务器时,它会因以下堆栈跟踪而崩溃:

它告诉我他找不到TestLdapConnectionRepresentation.class,但我不明白他为什么要尝试搜索它,因为我从未使用过Keycloak的这个功能。

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'keycloakService' defined in file [C:\Users\User\IdeaProjects\software\backend\resource-server\target\classes\com\software\backend\resource\services\KeycloakService.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.software.backend.resource.services.KeycloakService]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/keycloak/representations/idm/TestLdapConnectionRepresentation
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1320) ~[spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1214) ~[spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:557) ~[spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517) ~[spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323) ~[spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE]
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) ~[spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321) ~[spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE]
    at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) ~[spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1287) ~[spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1207) ~[spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE]
    at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:885) ~[spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE]
    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:789) ~[spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE]
    ... 159 common frames omitted
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.software.backend.resource.services.KeycloakService]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/keycloak/representations/idm/TestLdapConnectionRepresentation
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:213) ~[spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE]
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:87) ~[spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1312) ~[spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE]
    ... 171 common frames omitted
Caused by: java.lang.NoClassDefFoundError: org/keycloak/representations/idm/TestLdapConnectionRepresentation
    at java.base/java.lang.Class.getDeclaredMethods0(Native Method) ~[na:na]
    at java.base/java.lang.Class.privateGetDeclaredMethods(Class.java:3244) ~[na:na]
    at java.base/java.lang.Class.privateGetPublicMethods(Class.java:3269) ~[na:na]
    at java.base/java.lang.Class.getMethods(Class.java:1918) ~[na:na]
    at org.jboss.resteasy.client.jaxrs.ProxyBuilder.proxy(ProxyBuilder.java:57) ~[resteasy-client-3.9.1.Final.jar:3.9.1.Final]
    at org.jboss.resteasy.client.jaxrs.internal.proxy.SubResourceInvoker.invoke(SubResourceInvoker.java:67) ~[resteasy-client-3.9.1.Final.jar:3.9.1.Final]
    at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientProxy.invoke(ClientProxy.java:76) ~[resteasy-client-3.9.1.Final.jar:3.9.1.Final]
    at com.sun.proxy.$Proxy107.realm(Unknown Source) ~[na:na]
    at org.keycloak.admin.client.Keycloak.realm(Keycloak.java:114) ~[keycloak-admin-client-10.0.0.jar:10.0.0]
    at com.software.backend.resource.services.KeycloakService.<init>(KeycloakService.java:29) ~[classes/:na]
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:na]
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:na]
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:na]
    at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500) ~[na:na]
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481) ~[na:na]
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:200) ~[spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE]
    ... 173 common frames omitted
Caused by: java.lang.ClassNotFoundException: org.keycloak.representations.idm.TestLdapConnectionRepresentation
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602) ~[na:na]
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) ~[na:na]
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) ~[na:na]
    ... 189 common frames omitted


Process finished with exit code 0

这不是完整的堆栈跟踪,但由于 StackOverflows 字符限制,我只发布我认为重要的行。如果您需要更多信息,可以帮助我。告诉我。

希望有人可以帮助我。

【问题讨论】:

    标签: spring-boot keycloak graphql-java


    【解决方案1】:

    遇到同样的问题,Gradle 似乎没有正确解决“keycloak-core”依赖项(解决版本 8.0.1):

    $ gradlew -q dependencies
    
    ...
    \--- org.keycloak:keycloak-admin-client:11.0.2
     +--- org.keycloak:keycloak-core:11.0.2 -> 8.0.1
    ...
    

    我还将“keycloak-core”依赖项直接添加到我的项目中,从而解决了问题:

    dependencies {
       implementation 'org.keycloak:keycloak-core:11.0.2'
       implementation 'org.keycloak:keycloak-admin-client:11.0.2'
    }
    
    $ ./gradlew -q dependencies
    
    ...
    \--- org.keycloak:keycloak-admin-client:11.0.2
     +--- org.keycloak:keycloak-core:11.0.2
    ...
    

    【讨论】:

      猜你喜欢
      • 2016-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-03
      • 2020-07-24
      • 2017-09-20
      • 1970-01-01
      相关资源
      最近更新 更多