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