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

Reply via email to