Hi, I'm trying to implement an authorization extension to Guacamole. I'm trying to do this by creating a class that implements this interface in guacamole-ext: org/apache/guacamole/net/auth/AuthenticationProvider.
But when I put my .jar file in the extensions directory and bounce Tomcat, guacamole doesn't load properly and I get this class loader error in localhost.YYYY-MM-DD.log: SEVERE: Exception sending context initialized event to listener instance of class org.glyptodon.guacamole.net.basic.BasicServletContextListener java.lang.NoClassDefFoundError: org/apache/guacamole/net/auth/AuthenticationProvider This happens even before I mention the extension in the properties file. To get my jarfile right, is there something I have to do beyond setting up the dependencies as explained in chapter 18 at http://guacamole.incubator.apache.org/doc/gug/custom-auth.html#idm140538186580816 ? Thanks Ollie Jones ------------------------------ Here's the full error msg with tracebacks. Jul 28, 2016 2:50:27 PM org.apache.catalina.core.StandardContext listenerStart SEVERE: Exception sending context initialized event to listener instance of class org.glyptodon.guacamole.net.basic.BasicServletContextListener java.lang.NoClassDefFoundError: org/apache/guacamole/net/auth/AuthenticationProvider at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:763) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) at java.net.URLClassLoader.access$100(URLClassLoader.java:73) at java.net.URLClassLoader$1.run(URLClassLoader.java:368) at java.net.URLClassLoader$1.run(URLClassLoader.java:362) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:361) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at org.glyptodon.guacamole.net.basic.extension.Extension.getAuthenticationProviderClass(Extension.java:214) at org.glyptodon.guacamole.net.basic.extension.Extension.getAuthenticationProviderClasses(Extension.java:257) at org.glyptodon.guacamole.net.basic.extension.Extension.<init>(Extension.java:359) at org.glyptodon.guacamole.net.basic.extension.ExtensionModule.loadExtensions(ExtensionModule.java:349) at org.glyptodon.guacamole.net.basic.extension.ExtensionModule.configureServlets(ExtensionModule.java:417) at com.google.inject.servlet.ServletModule.configure(ServletModule.java:53) at com.google.inject.AbstractModule.configure(AbstractModule.java:59) at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:223) at com.google.inject.spi.Elements.getElements(Elements.java:101) at com.google.inject.internal.InjectorShell$Builder.build(InjectorShell.java:133) at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:103) at com.google.inject.Guice.createInjector(Guice.java:95) at com.google.inject.Guice.createInjector(Guice.java:83) at org.glyptodon.guacamole.net.basic.BasicServletContextListener.getInjector(BasicServletContextListener.java:83) at com.google.inject.servlet.GuiceServletContextListener.contextInitialized(GuiceServletContextListener.java:45) at org.glyptodon.guacamole.net.basic.BasicServletContextListener.contextInitialized(BasicServletContextListener.java:77) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5068) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5584) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:899) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:875) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652) at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1091) at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1980) 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) Caused by: java.lang.ClassNotFoundException: org.apache.guacamole.net.auth.AuthenticationProvider at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 40 more
