Check the maven dependency tree of CloudStack with and without your plugin using 'mvn dependency:tree'. This will show the maven dependencies and transitive dependencies. I ran in to issues like this when I had a transitive dependency that pulled in a newer or older version of a pre-existing dependency of CloudStack.
-Chris -- Chris Suich chris.su...@netapp.com NetApp Software Engineer Data Center Platforms – Cloud Solutions Citrix, Cisco & Red Hat On Sep 10, 2013, at 10:46 PM, "Han,Meng" <meng...@ufl.edu> wrote: > Hi all, > > I am adding a plugin to CloudStack. One of the APIs of this plugin > (launchCluster) is to start a haoop cluster on Cloudstack using Whirr. I > included whirr as a dependency to my plugin. > > <dependency> > <groupId>org.apache.whirr</groupId> > <artifactId>whirr</artifactId> > <version>0.8.2</version> > <type>pom</type> > </dependency> > > > When I test this api in CloudMonkey I am getting the following error: > >> launchCluster config=/home/meng/whirr/dream > HTTP Error 500: java.lang.NoClassDefFoundError: > org/jclouds/json/config/GsonModule$DateAdapter > > Below is the management server log : > > Running on provider cloudstack using identity > h3DKHC9AVlhKnUhpyThMuLhC119QfNQQ8xhyjbf_rnu5ZL1QeOWdw7aZRGXVO1VApG6q0aK-A-tQRQsZFwnOXQ > ERROR [apache.whirr.ClusterController] (1859072722@qtp-1275353837-2:) Unable > to start the cluster. Terminating all nodes. > com.google.common.util.concurrent.ExecutionError: > java.lang.NoClassDefFoundError: com/google/gson/TypeAdapter > at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2261) > at com.google.common.cache.LocalCache.get(LocalCache.java:3995) > at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3999) > at > com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4869) > at > com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4875) > at org.apache.whirr.service.ComputeCache.apply(ComputeCache.java:86) > at org.apache.whirr.service.ComputeCache.apply(ComputeCache.java:78) > at > org.apache.whirr.actions.ScriptBasedClusterAction.execute(ScriptBasedClusterAction.java:110) > at > org.apache.whirr.ClusterController.bootstrapCluster(ClusterController.java:137) > at > org.apache.whirr.ClusterController.launchCluster(ClusterController.java:113) > at > org.apache.whirr.cli.command.LaunchClusterCommand.run(LaunchClusterCommand.java:69) > at > org.apache.whirr.cli.command.LaunchClusterCommand.run(LaunchClusterCommand.java:59) > at > org.apache.cloudstack.api.command.user.emr.LaunchClusterCmd.execute(LaunchClusterCmd.java:63) > at com.cloud.api.ApiDispatcher.dispatch(ApiDispatcher.java:162) > at com.cloud.api.ApiServer.queueCommand(ApiServer.java:505) > at com.cloud.api.ApiServer.handleRequest(ApiServer.java:355) > at com.cloud.api.ApiServlet.processRequest(ApiServlet.java:302) > at com.cloud.api.ApiServlet.doGet(ApiServlet.java:66) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) > at > org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) > at > org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:401) > at > org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) > at > org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) > at > org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766) > at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450) > at > org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230) > at > org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114) > at > org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) > at org.mortbay.jetty.Server.handle(Server.java:326) > at > org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) > at > org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:928) > at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549) > at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) > at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) > at > org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410) > at > org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) > Caused by: java.lang.NoClassDefFoundError: com/google/gson/TypeAdapter > at java.lang.ClassLoader.defineClass1(Native Method) > at java.lang.ClassLoader.defineClass(ClassLoader.java:791) > at > java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) > at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) > at java.net.URLClassLoader.access$100(URLClassLoader.java:71) > at java.net.URLClassLoader$1.run(URLClassLoader.java:361) > at java.net.URLClassLoader$1.run(URLClassLoader.java:355) > at java.security.AccessController.doPrivileged(Native Method) > at java.net.URLClassLoader.findClass(URLClassLoader.java:354) > at > org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:392) > at > org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:363) > at > org.jclouds.cloudstack.config.CloudStackParserModule.configure(CloudStackParserModule.java:46) > 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 org.jclouds.ContextBuilder.buildInjector(ContextBuilder.java:405) > at org.jclouds.ContextBuilder.buildInjector(ContextBuilder.java:329) > at org.jclouds.ContextBuilder.buildView(ContextBuilder.java:620) > at org.jclouds.ContextBuilder.buildView(ContextBuilder.java:600) > at org.apache.whirr.service.ComputeCache$1.load(ComputeCache.java:117) > at org.apache.whirr.service.ComputeCache$1.load(ComputeCache.java:96) > at > com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3594) > at > com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2379) > at > com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2342) > at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2257) > ... 36 more > Caused by: java.lang.ClassNotFoundException: com.google.gson.TypeAdapter > at > org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50) > at > org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:244) > at > org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:230) > at > org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:401) > at > org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:363) > at java.lang.ClassLoader.defineClass1(Native Method) > ... 63 more > INFO [whirr.state.ClusterStateStore] (1859072722@qtp-1275353837-2:) Unable > to load cluster state, assuming it has no running nodes. > java.io.FileNotFoundException: /home/meng/.whirr/hadoop/instances (No such > file or directory) > at java.io.FileInputStream.open(Native Method) > at java.io.FileInputStream.<init>(FileInputStream.java:138) > at com.google.common.io.Files$FileByteSource.openStream(Files.java:124) > at com.google.common.io.Files$FileByteSource.openStream(Files.java:114) > at > com.google.common.io.ByteSource$AsCharSource.openStream(ByteSource.java:287) > at com.google.common.io.CharStreams$3.getInput(CharStreams.java:508) > at com.google.common.io.CharStreams$3.getInput(CharStreams.java:505) > at com.google.common.io.CharStreams.readLines(CharStreams.java:319) > at com.google.common.io.Files.readLines(Files.java:690) > at > org.apache.whirr.state.FileClusterStateStore.load(FileClusterStateStore.java:55) > at > org.apache.whirr.state.ClusterStateStore.tryLoadOrEmpty(ClusterStateStore.java:59) > at > org.apache.whirr.ClusterController.destroyCluster(ClusterController.java:226) > at > org.apache.whirr.ClusterController.launchCluster(ClusterController.java:121) > at > org.apache.whirr.cli.command.LaunchClusterCommand.run(LaunchClusterCommand.java:69) > at > org.apache.whirr.cli.command.LaunchClusterCommand.run(LaunchClusterCommand.java:59) > at > org.apache.cloudstack.api.command.user.emr.LaunchClusterCmd.execute(LaunchClusterCmd.java:63) > at com.cloud.api.ApiDispatcher.dispatch(ApiDispatcher.java:162) > at com.cloud.api.ApiServer.queueCommand(ApiServer.java:505) > at com.cloud.api.ApiServer.handleRequest(ApiServer.java:355) > at com.cloud.api.ApiServlet.processRequest(ApiServlet.java:302) > at com.cloud.api.ApiServlet.doGet(ApiServlet.java:66) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) > at > org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) > at > org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:401) > at > org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) > at > org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) > at > org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766) > at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450) > at > org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230) > at > org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114) > at > org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) > at org.mortbay.jetty.Server.handle(Server.java:326) > at > org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) > at > org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:928) > at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549) > at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) > at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) > at > org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410) > at > org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) > [ERROR] Error for /client/api > com.google.common.util.concurrent.ExecutionError: > java.lang.NoClassDefFoundError: org/jclouds/json/config/GsonModule$DateAdapter > at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2261) > at com.google.common.cache.LocalCache.get(LocalCache.java:3995) > at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3999) > at > com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4869) > at > com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4875) > at org.apache.whirr.service.ComputeCache.apply(ComputeCache.java:86) > at org.apache.whirr.service.ComputeCache.apply(ComputeCache.java:78) > at > org.apache.whirr.actions.ScriptBasedClusterAction.execute(ScriptBasedClusterAction.java:110) > at > org.apache.whirr.ClusterController.destroyCluster(ClusterController.java:233) > at > org.apache.whirr.ClusterController.destroyCluster(ClusterController.java:226) > at > org.apache.whirr.ClusterController.launchCluster(ClusterController.java:121) > at > org.apache.whirr.cli.command.LaunchClusterCommand.run(LaunchClusterCommand.java:69) > at > org.apache.whirr.cli.command.LaunchClusterCommand.run(LaunchClusterCommand.java:59) > at > org.apache.cloudstack.api.command.user.emr.LaunchClusterCmd.execute(LaunchClusterCmd.java:63) > at com.cloud.api.ApiDispatcher.dispatch(ApiDispatcher.java:162) > at com.cloud.api.ApiServer.queueCommand(ApiServer.java:505) > at com.cloud.api.ApiServer.handleRequest(ApiServer.java:355) > at com.cloud.api.ApiServlet.processRequest(ApiServlet.java:302) > at com.cloud.api.ApiServlet.doGet(ApiServlet.java:66) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) > at > org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) > at > org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:401) > at > org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) > at > org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) > at > org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766) > at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450) > at > org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230) > at > org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114) > at > org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) > at org.mortbay.jetty.Server.handle(Server.java:326) > at > org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) > at > org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:928) > at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549) > at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) > at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) > at > org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410) > at > org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) > Caused by: java.lang.NoClassDefFoundError: > org/jclouds/json/config/GsonModule$DateAdapter > at > org.jclouds.cloudstack.config.CloudStackParserModule.configure(CloudStackParserModule.java:46) > 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 org.jclouds.ContextBuilder.buildInjector(ContextBuilder.java:405) > at org.jclouds.ContextBuilder.buildInjector(ContextBuilder.java:329) > at org.jclouds.ContextBuilder.buildView(ContextBuilder.java:620) > at org.jclouds.ContextBuilder.buildView(ContextBuilder.java:600) > at org.apache.whirr.service.ComputeCache$1.load(ComputeCache.java:117) > at org.apache.whirr.service.ComputeCache$1.load(ComputeCache.java:96) > at > com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3594) > at > com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2379) > at > com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2342) > at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2257) > ... 37 more > > > The execute method for the lauchClusterCmd is below: > > public void execute() { > > LaunchClusterResponse response = new LaunchClusterResponse(); > response.setObjectName("launchCluster"); > LaunchClusterCommand command = null; > try { > command = new LaunchClusterCommand(); //imported from > org.apache.whirr.cli.command.LaunchClusterCommand; > } catch (Exception ex) { > > Logger.getLogger(LaunchClusterCmd.class.getName()).log(Level.SEVERE, null, > ex); > } > String[] args = new String[2]; > args[0] = "--config"; > args[1] = config; > > try { > command.run(System.in, System.out, System.err, > Arrays.asList(args)); > } catch (Exception ex) { > > Logger.getLogger(LaunchClusterCmd.class.getName()).log(Level.SEVERE, null, > ex); > } > response.setResponseName(getCommandName()); > output = "successfully launched the cluster."; > response.setOutPut(output); > this.setResponseObject(response); > } > Does the above error indicate that I am missing a couple of class files or > am I not configuring the JAVA classpath correctly? > > Also could someone explain what does this file > client/target/conf/classpath.conf do ? > > > Thanks. > > Cheers, > Meng