You probably just need to make sure you are passing the correct classloader
to ReflectiveDynamicAccess.
On 27 June 2017 at 10:58, Jonas Schönenberger <
jonas.schoenenberger(a)gmail.com> wrote:
Hi everyone
I am writing an Keycloak SPI that will modify clients based on events.
Therefore I use the EventListenerProvider. In the SPI code, that is written
in Scala, I am using the Akka library for certain tasks. Unfortunately I
get an ClassNotFoundException for the class
akka.event.DefaultLoggingFilter when I run Keycloak with the spi. I've
built an spi before, that is not using Akka and it worked.
The class is available inside the spi .jar-file. I found a ticket on
Keycloak's Jira Board (
https://issues.jboss.org/browse/KEYCLOAK-4738) and
updated to Keycloak version 3.1.0.Final, that contains the fix for this
ticket - didn't help.
Here is the full error message I get:
09:47:49,003 ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool
> -- 52) MSC000001: Failed to start service
> jboss.undertow.deployment.default-server.default-host./auth:
> org.jboss.msc.service.StartException in service
> jboss.undertow.deployment.default-server.default-host./auth:
> java.lang.RuntimeException: RESTEASY003325: Failed to construct public
> org.keycloak.services.resources.KeycloakApplication(
javax.servlet.ServletContext,org.jboss.resteasy.core.Dispatcher)
> at
> org.wildfly.extension.undertow.deployment.UndertowDeploymentService$1.
run(UndertowDeploymentService.java:85)
> at java.util.concurrent.Executors$RunnableAdapter.
call(Executors.java:511)
> at java.util.concurrent.FutureTask.run(FutureTask.java:266)
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(
ThreadPoolExecutor.java:1142)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(
ThreadPoolExecutor.java:617)
> at java.lang.Thread.run(Thread.java:745)
> at org.jboss.threads.JBossThread.run(JBossThread.java:320)
> Caused by: java.lang.RuntimeException: RESTEASY003325: Failed to
construct
> public
> org.keycloak.services.resources.KeycloakApplication(
javax.servlet.ServletContext,org.jboss.resteasy.core.Dispatcher)
> at
> org.jboss.resteasy.core.ConstructorInjectorImpl.construct(
ConstructorInjectorImpl.java:162)
> at
> org.jboss.resteasy.spi.ResteasyProviderFactory.createProviderInstance(
ResteasyProviderFactory.java:2209)
> at
> org.jboss.resteasy.spi.ResteasyDeployment.createApplication(
ResteasyDeployment.java:299)
> at
> org.jboss.resteasy.spi.ResteasyDeployment.start(
ResteasyDeployment.java:240)
> at
> org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.
init(ServletContainerDispatcher.java:113)
> at
> org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.init(
HttpServletDispatcher.java:36)
> at
> io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(
LifecyleInterceptorInvocation.java:117)
> at
> org.wildfly.extension.undertow.security.RunAsLifecycleInterceptor.init(
RunAsLifecycleInterceptor.java:78)
> at
> io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(
LifecyleInterceptorInvocation.java:103)
> at
> io.undertow.servlet.core.ManagedServlet$DefaultInstanceStrategy.start(
ManagedServlet.java:231)
> at
> io.undertow.servlet.core.ManagedServlet.createServlet(
ManagedServlet.java:132)
> at
> io.undertow.servlet.core.DeploymentManagerImpl.start(
DeploymentManagerImpl.java:526)
> at
> org.wildfly.extension.undertow.deployment.UndertowDeploymentService.
startContext(UndertowDeploymentService.java:101)
> at
> org.wildfly.extension.undertow.deployment.UndertowDeploymentService$1.
run(UndertowDeploymentService.java:82)
> ... 6 more
> Caused by: java.lang.ClassNotFoundException:
> akka.event.DefaultLoggingFilter from [Module
> "deployment.keycloak-server.war:main" from Service Module Loader]
> at
> org.jboss.modules.ModuleClassLoader.findClass(
ModuleClassLoader.java:198)
> at
> org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(
ConcurrentClassLoader.java:363)
> at
> org.jboss.modules.ConcurrentClassLoader.performLoadClass(
ConcurrentClassLoader.java:351)
> at
> org.jboss.modules.ConcurrentClassLoader.loadClass(
ConcurrentClassLoader.java:93)
> at java.lang.Class.forName0(Native Method)
> at java.lang.Class.forName(Class.java:348)
> at
> akka.actor.ReflectiveDynamicAccess.$anonfun$getClassFor$1(
ReflectiveDynamicAccess.scala:21)
> at scala.util.Try$.apply(Try.scala:209)
> at
> akka.actor.ReflectiveDynamicAccess.getClassFor(
ReflectiveDynamicAccess.scala:20)
> at
> akka.actor.ReflectiveDynamicAccess.createInstanceFor(
ReflectiveDynamicAccess.scala:38)
> at akka.actor.ActorSystemImpl.<init>(ActorSystem.scala:758)
> at akka.actor.ActorSystem$.apply(ActorSystem.scala:245)
> at akka.actor.ActorSystem$.apply(ActorSystem.scala:288)
> at akka.actor.ActorSystem$.apply(ActorSystem.scala:263)
> at
> some.package.keycloak.keycloak.REST.KeycloakAdminClient.<init>(
REST.scala:592)
> at
> some.package.keycloak.keycloak.KeycloakConfigurator.
<init>(KeycloakConfigurator.scala:21)
> at
> some.package.keycloak.MyEventListenerProviderFactory
.init(MyEventListenerProvider.scala:50)
> at
> org.keycloak.services.DefaultKeycloakSessionFactory.loadFactories(
DefaultKeycloakSessionFactory.java:209)
> at
> org.keycloak.services.DefaultKeycloakSessionFactory.init(
DefaultKeycloakSessionFactory.java:76)
> at
> org.keycloak.services.resources.KeycloakApplication.
createSessionFactory(KeycloakApplication.java:313)
> at
> org.keycloak.services.resources.KeycloakApplication.
<init>(KeycloakApplication.java:110)
> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
> at
> sun.reflect.NativeConstructorAccessorImpl.newInstance(
NativeConstructorAccessorImpl.java:62)
> at
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(
DelegatingConstructorAccessorImpl.java:45)
> at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
> at
> org.jboss.resteasy.core.ConstructorInjectorImpl.construct(
ConstructorInjectorImpl.java:150)
> ... 19 more
> 09:47:49,010 ERROR [org.jboss.as.controller.management-operation]
> (Controller Boot Thread) WFLYCTL0013: Operation ("add") failed - address:
> ([("deployment" => "keycloak-server.war")]) - failure
description:
> {"WFLYCTL0080: Failed services" =>
> {"jboss.undertow.deployment.default-server.default-host./auth" =>
> "org.jboss.msc.service.StartException in service
> jboss.undertow.deployment.default-server.default-host./auth:
> java.lang.RuntimeException: RESTEASY003325: Failed to construct public
> org.keycloak.services.resources.KeycloakApplication(
javax.servlet.ServletContext,org.jboss.resteasy.core.Dispatcher)
> Caused by: java.lang.RuntimeException: RESTEASY003325: Failed to
> construct public
> org.keycloak.services.resources.KeycloakApplication(
javax.servlet.ServletContext,org.jboss.resteasy.core.Dispatcher)
> Caused by: java.lang.ClassNotFoundException:
> akka.event.DefaultLoggingFilter from [Module
> \"deployment.keycloak-server.war:main\" from Service Module
Loader]"}}
Do you guys have an idea what can cause this error and how to solve it?
Thank you for your help and Best Regards
Jonas
_______________________________________________
keycloak-user mailing list
keycloak-user(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/keycloak-user