Do not add jclouds as an explicit dependency - maven will find the right one as a transitive dependency of Whirr. That will solve your problem unless cloud-api requires a specific (older) version of Guava.
-- Andrei Savu / axemblr.com On Wed, Sep 11, 2013 at 6:31 PM, Han,Meng <[email protected]> wrote: > Hi Andrei, > > Thanks for your reply. The complete pom file for this plugin is below. > > <project > xmlns="http://maven.apache.**org/POM/4.0.0<http://maven.apache.org/POM/4.0.0> > " > > xmlns:xsi="http://www.w3.org/**2001/XMLSchema-instance<http://www.w3.org/2001/XMLSchema-instance> > " > > xsi:schemaLocation="http://**maven.apache.org/POM/4.0.0<http://maven.apache.org/POM/4.0.0> > > http://maven.apache.org/xsd/**maven-4.0.0.xsd<http://maven.apache.org/xsd/maven-4.0.0.xsd> > "> > <modelVersion>4.0.0</**modelVersion> > <artifactId>cloud-plugin-api-**emr</artifactId> > <name>Apache CloudStack Plugin - API Elastic Map Reduce</name> > <parent> > <groupId>org.apache.**cloudstack</groupId> > <artifactId>cloudstack-**plugins</artifactId> > <version>4.1.1</version> > <relativePath>../../pom.xml</**relativePath> > </parent> > <dependencies> > <dependency> > <groupId>org.apache.**cloudstack</groupId> > <artifactId>cloud-api</**artifactId> > <version>${project.version}</**version> > </dependency> > <dependency> > <groupId>org.apache.**cloudstack</groupId> > <artifactId>cloud-utils</**artifactId> > <version>${project.version}</**version> > </dependency> > > <dependency> > <groupId>org.apache.whirr</**groupId> > <artifactId>whirr</artifactId> > <version>0.8.2</version> > <type>pom</type> > </dependency> > <dependency> > <groupId>org.apache.jclouds</**groupId> > <artifactId>jclouds-all</**artifactId> > <version>1.6.1-incubating</**version> > </dependency> > </dependencies> > <build> > <defaultGoal>install</**defaultGoal> > <sourceDirectory>src</**sourceDirectory> > <testSourceDirectory>test</**testSourceDirectory> > <testResources> > <testResource> > <directory>test/resources</**directory> > </testResource> > </testResources> > <plugins> > <plugin> > <groupId>org.apache.maven.**plugins</groupId> > <artifactId>maven-surefire-**plugin</artifactId> > <configuration> > <argLine>-Xmx1024m</argLine> > <excludes> > <exclude>org/apache/**cloudstack/discovery/** > integration/*</exclude> > </excludes> > </configuration> > </plugin> > </plugins> > </build> > </project> > > > > On Wed, 11 Sep 2013 07:52:27 +0300, Andrei Savu wrote: > >> Most likely you have another version of Guava on your classpath. Please >> share the complete pom.xml file. >> >> -- Andrei Savu / axemblr.com >> >> >> On Wed, Sep 11, 2013 at 5:46 AM, Han,Meng <[email protected]> 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 >>> >>> h3DKHC9AVlhKnUhpyThMuLhC119QfN****QQ8xhyjbf_**** >>> rnu5ZL1QeOWdw7aZRGXVO1VApG6q0a >>> **K-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 >>> >>> >
