[Openstack] Developing with Scala/Java on OpenStack Swift
Luis Gervaso
luis at woorea.es
Thu Jan 10 18:17:15 UTC 2013
I copy this to the list because somebody can have similar issues
-----
Actually I think the issue is sbt ... (It seems that is not resolving
transitive dependencies)
First: Look and check if you added
https://maven.java.net/content/repositories/snapshots
https://raw.github.com/woorea/maven/master/snapshots
as maven repositories
A dirty way (but can help you):
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-jaxrs</artifactId>
<version>1.9.8</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-xc</artifactId>
<version>1.9.8</version>
</dependency>
On Thu, Jan 10, 2013 at 6:55 PM, Gui Maluf <guimalufb at gmail.com> wrote:
> I could find the pathway, but if I try
>
> scala> var openstack = new OpenStack
>
> I get this
>
> java.lang.RuntimeException: java.lang.ClassNotFoundException:
> org.glassfish.jersey.client.JerseyClientFactory
> at org.openstack.OpenStack.initialize(OpenStack.java:96)
> at org.openstack.OpenStack.<clinit>(OpenStack.java:33)
> at .<init>(<console>:23)
>
> at .<clinit>(<console>)
> at .<init>(<console>:11)
> at .<clinit>(<console>)
> at $print(<console>)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> at java.lang.reflect.Method.invoke(Unknown Source)
> at
> scala.tools.nsc.interpreter.IMain$ReadEvalPrint.call(IMain.scala:704)
> at
> scala.tools.nsc.interpreter.IMain$Request.loadAndRun(IMain.scala:914)
> at
> scala.tools.nsc.interpreter.IMain.loadAndRunReq$1(IMain.scala:546)
> at scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:577)
> at scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:543)
> at
> scala.tools.nsc.interpreter.ILoop.reallyInterpret$1(ILoop.scala:694)
> at
> scala.tools.nsc.interpreter.ILoop.interpretStartingWith(ILoop.scala:745)
> at scala.tools.nsc.interpreter.ILoop.command(ILoop.scala:651)
> at scala.tools.nsc.interpreter.ILoop.processLine$1(ILoop.scala:542)
> at scala.tools.nsc.interpreter.ILoop.loop(ILoop.scala:550)
> at scala.tools.nsc.interpreter.ILoop.process(ILoop.scala:822)
> at scala.tools.nsc.interpreter.ILoop.main(ILoop.scala:851)
> at xsbt.ConsoleInterface.run(ConsoleInterface.scala:57)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> at java.lang.reflect.Method.invoke(Unknown Source)
> at sbt.compiler.AnalyzingCompiler.call(AnalyzingCompiler.scala:73)
> at
> sbt.compiler.AnalyzingCompiler.console(AnalyzingCompiler.scala:64)
> at sbt.Console.console0$1(Console.scala:23)
> at
> sbt.Console$$anonfun$apply$2$$anonfun$apply$1.apply$mcV$sp(Console.scala:24)
> at sbt.TrapExit$.executeMain$1(TrapExit.scala:33)
> at sbt.TrapExit$$anon$1.run(TrapExit.scala:42)
> Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException:
> org.glassfish.jersey.client.JerseyClientFactory
> at
> javax.ws.rs.client.ClientFactory.getFactory(ClientFactory.java:92)
> at
> javax.ws.rs.client.ClientFactory.newClient(ClientFactory.java:103)
> at org.openstack.OpenStack.initialize(OpenStack.java:57)
> ... 33 more
> Caused by: java.lang.ClassNotFoundException:
> org.glassfish.jersey.client.JerseyClientFactory
> at java.net.URLClassLoader$1.run(Unknown Source)
> at java.net.URLClassLoader$1.run(Unknown Source)
> at java.security.AccessController.doPrivileged(Native Method)
> at java.net.URLClassLoader.findClass(Unknown Source)
> at java.lang.ClassLoader.loadClass(Unknown Source)
> at java.lang.ClassLoader.loadClass(Unknown Source)
> at java.lang.Class.forName0(Native Method)
> at java.lang.Class.forName(Unknown Source)
> at
> javax.ws.rs.client.FactoryFinder.newInstance(FactoryFinder.java:114)
> at javax.ws.rs.client.FactoryFinder.find(FactoryFinder.java:206)
> at
> javax.ws.rs.client.ClientFactory.getFactory(ClientFactory.java:75)
> ... 35 more
>
>
> If I try
> scala> var openstack = new OpenStack()
>
> I get
>
>
> java.lang.NoClassDefFoundError: Could not initialize class
> org.openstack.OpenStack
> at .<init>(<console>:23)
>
> at .<clinit>(<console>)
> at .<init>(<console>:11)
> at .<clinit>(<console>)
> at $print(<console>)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> at java.lang.reflect.Method.invoke(Unknown Source)
> at
> scala.tools.nsc.interpreter.IMain$ReadEvalPrint.call(IMain.scala:704)
> at
> scala.tools.nsc.interpreter.IMain$Request.loadAndRun(IMain.scala:914)
> at
> scala.tools.nsc.interpreter.IMain.loadAndRunReq$1(IMain.scala:546)
> at scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:577)
> at scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:543)
> at
> scala.tools.nsc.interpreter.ILoop.reallyInterpret$1(ILoop.scala:694)
> at
> scala.tools.nsc.interpreter.ILoop.interpretStartingWith(ILoop.scala:745)
> at scala.tools.nsc.interpreter.ILoop.command(ILoop.scala:651)
> at scala.tools.nsc.interpreter.ILoop.processLine$1(ILoop.scala:542)
> at scala.tools.nsc.interpreter.ILoop.loop(ILoop.scala:550)
> at scala.tools.nsc.interpreter.ILoop.process(ILoop.scala:822)
> at scala.tools.nsc.interpreter.ILoop.main(ILoop.scala:851)
> at xsbt.ConsoleInterface.run(ConsoleInterface.scala:57)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> at java.lang.reflect.Method.invoke(Unknown Source)
> at sbt.compiler.AnalyzingCompiler.call(AnalyzingCompiler.scala:73)
> at
> sbt.compiler.AnalyzingCompiler.console(AnalyzingCompiler.scala:64)
> at sbt.Console.console0$1(Console.scala:23)
> at
> sbt.Console$$anonfun$apply$2$$anonfun$apply$1.apply$mcV$sp(Console.scala:24)
> at sbt.TrapExit$.executeMain$1(TrapExit.scala:33)
> at sbt.TrapExit$$anon$1.run(TrapExit.scala:42)
>
>
> Any suggestion?
> Thanks for all your help!
>
>
> On Mon, Jan 7, 2013 at 1:25 PM, Luis Gervaso <luis at woorea.es> wrote:
>
>> The class is here:
>>
>> openstack-java-sdk <https://github.com/woorea/openstack-java-sdk> /
>> openstack-client<https://github.com/woorea/openstack-java-sdk/tree/master/openstack-client>/
>> src<https://github.com/woorea/openstack-java-sdk/tree/master/openstack-client/src>/
>> main<https://github.com/woorea/openstack-java-sdk/tree/master/openstack-client/src/main>/
>> java<https://github.com/woorea/openstack-java-sdk/tree/master/openstack-client/src/main/java>/
>> org<https://github.com/woorea/openstack-java-sdk/tree/master/openstack-client/src/main/java/org>/
>> openstack<https://github.com/woorea/openstack-java-sdk/tree/master/openstack-client/src/main/java/org/openstack>/
>> *OpenStack.java*
>>
>> Be sure that you have openstack-client jar in your classpath. Maybe a sbt
>> issue .... You can try and force
>> that dependency (openstack-client) in your config file
>>
>> Cheers!
>>
>>
>>
>>
>> On Mon, Jan 7, 2013 at 3:59 PM, Gui Maluf <guimalufb at gmail.com> wrote:
>>
>>> Hey Luis,
>>> Here I'm again! I figure out how access and instantiate some classes,
>>> but there is one that I couldn't make it work. Look what I'm doing, and see
>>> if you could give me some tips.
>>>
>>> import org.openstack._
>>>
>>> val os_auth_url = "http://150.164.3.236:5000/v2.0"
>>> val os_username = "admin"
>>> val os_tenant = "admin"
>>> val os_password = "b1gNUv3m."
>>>
>>> var k = new keystone.KeystoneClient(os_auth_url)
>>> var auth = keystone.api.Authenticate.withPasswordCredentials(
>>> os_username,os_password )
>>> var a = k.execute( auth ) //the problem occurs here.
>>>
>>>
>>> import org.openstack._
>>> os_auth_url: java.lang.String = http://150.164.3.236:5000/v2.0
>>> os_username: java.lang.String = admin
>>> os_tenant: java.lang.String = admin
>>> os_password: java.lang.String = b1gNUv3m.
>>> k: org.openstack.keystone.KeystoneClient =
>>> org.openstack.keystone.KeystoneClient at d3b1099
>>> auth: org.openstack.keystone.api.Authenticate =
>>> org.openstack.keystone.api.Authenticate at 6440ba5
>>> java.lang.NoClassDefFoundError: Could not initialize class
>>> org.openstack.OpenStack
>>> at
>>> org.openstack.keystone.KeystoneClient.execute(KeystoneClient.java:19)
>>> at $$$$3ec621ebf46e4c475aa71182a0c2fcab$$$.<init>(<console>:129)
>>> at $$$$3ec621ebf46e4c475aa71182a0c2fcab$$$.<clinit>(<console>)
>>> at .<init>(<console>:11)
>>> at .<clinit>(<console>)
>>> at $print(<console>)
>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown
>>> Source)
>>> at java.lang.reflect.Method.invoke(Unknown Source)
>>> at
>>> scala.tools.nsc.interpreter.IMain$ReadEvalPrint.call(IMain.scala:704)
>>> at
>>> scala.tools.nsc.interpreter.IMain$Request.loadAndRun(IMain.scala:914)
>>> at
>>> scala.tools.nsc.interpreter.IMain.loadAndRunReq$1(IMain.scala:546)
>>> at scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:577)
>>> at scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:543)
>>> at
>>> scala.tools.nsc.interpreter.ILoop.reallyInterpret$1(ILoop.scala:694)
>>> at
>>> scala.tools.nsc.interpreter.ILoop.interpretStartingWith(ILoop.scala:745)
>>> at scala.tools.nsc.interpreter.ILoop.command(ILoop.scala:651)
>>> at
>>> scala.tools.nsc.interpreter.ILoop.processLine$1(ILoop.scala:542)
>>> at scala.tools.nsc.interpreter.ILoop.loop(ILoop.scala:550)
>>> at
>>> scala.tools.nsc.interpreter.ILoop$$anonfun$interpretAllFrom$1.apply(ILoop.scala:563)
>>> at
>>> scala.tools.nsc.interpreter.ILoop$$anonfun$interpretAllFrom$1.apply(ILoop.scala:560)
>>> at
>>> scala.tools.nsc.io.Streamable$Chars$class.applyReader(Streamable.scala:99)
>>> at scala.tools.nsc.io.File.applyReader(File.scala:76)
>>> at
>>> scala.tools.nsc.interpreter.ILoop.interpretAllFrom(ILoop.scala:560)
>>> at
>>> scala.tools.nsc.interpreter.ILoop$$anonfun$loadCommand$1.apply(ILoop.scala:604)
>>> at
>>> scala.tools.nsc.interpreter.ILoop$$anonfun$loadCommand$1.apply(ILoop.scala:603)
>>> at scala.tools.nsc.interpreter.ILoop.withFile(ILoop.scala:597)
>>> at scala.tools.nsc.interpreter.ILoop.loadCommand(ILoop.scala:603)
>>> at
>>> scala.tools.nsc.interpreter.ILoop$$anonfun$standardCommands$8.apply(ILoop.scala:222)
>>> at
>>> scala.tools.nsc.interpreter.ILoop$$anonfun$standardCommands$8.apply(ILoop.scala:222)
>>> at
>>> scala.tools.nsc.interpreter.LoopCommands$LineCmd.apply(LoopCommands.scala:80)
>>> at scala.tools.nsc.interpreter.ILoop.command(ILoop.scala:646)
>>> at
>>> scala.tools.nsc.interpreter.ILoop.processLine$1(ILoop.scala:542)
>>> at scala.tools.nsc.interpreter.ILoop.loop(ILoop.scala:550)
>>> at scala.tools.nsc.interpreter.ILoop.process(ILoop.scala:822)
>>> at scala.tools.nsc.interpreter.ILoop.main(ILoop.scala:851)
>>> at xsbt.ConsoleInterface.run(ConsoleInterface.scala:57)
>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown
>>> Source)
>>> at java.lang.reflect.Method.invoke(Unknown Source)
>>> at
>>> sbt.compiler.AnalyzingCompiler.call(AnalyzingCompiler.scala:73)
>>> at
>>> sbt.compiler.AnalyzingCompiler.console(AnalyzingCompiler.scala:64)
>>> at sbt.Console.console0$1(Console.scala:23)
>>> at
>>> sbt.Console$$anonfun$apply$2$$anonfun$apply$1.apply$mcV$sp(Console.scala:24)
>>> at sbt.TrapExit$.executeMain$1(TrapExit.scala:33)
>>> at sbt.TrapExit$$anon$1.run(TrapExit.scala:42)
>>>
>>>
>>> Thanks in advance!
>>>
>>>
>>> On Thu, Jan 3, 2013 at 8:44 PM, Luis Gervaso <luis at woorea.es> wrote:
>>>
>>>> Gui,
>>>>
>>>> If you are using scala probably the issues come from java collections
>>>> api
>>>> (when you use whatever java library)
>>>>
>>>> Probably you know, look at :
>>>> http://www.scala-lang.org/docu/files/collections-api/collections_46.html
>>>>
>>>> Hope it helps
>>>>
>>>> Luis
>>>>
>>>> On Thu, Jan 3, 2013 at 7:40 PM, Gui Maluf <guimalufb at gmail.com> wrote:
>>>>
>>>>> Luis,
>>>>> Sorry for fulling your mailbox, but I figure out the problem. Instead
>>>>> of using java, I'm using scala. So there is a little difference accessing
>>>>> those things.
>>>>>
>>>>> Now I'm resolving depencies and I hope I can make it work!
>>>>>
>>>>> Thanks and sorry again!
>>>>>
>>>>>
>>>>> On Thu, Jan 3, 2013 at 4:20 PM, Gui Maluf <guimalufb at gmail.com> wrote:
>>>>>
>>>>>> Luis,
>>>>>> sorry my stupid, but I can't understand this piece of code:
>>>>>>
>>>>>> Access access =
>>>>>> keystone.execute(Authenticate.withPasswordCredentials(
>>>>>> KEYSTONE_USERNAME, KEYSTONE_PASSWORD));
>>>>>> access =
>>>>>> keystone.execute(Authenticate.withToken(access.getToken().getId()).withTenantId(tenants.getList().get(0).getId()));
>>>>>>
>>>>>> What should I include in my project in order to have this
>>>>>> Authenticate and Access class?
>>>>>>
>>>>>> I'm really lost and confused! I would appreciate your help!
>>>>>>
>>>>>> Lots of Thanks in advance!
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Thu, Jan 3, 2013 at 4:00 AM, Luis Gervaso <luis at woorea.es> wrote:
>>>>>>
>>>>>>> Hi Gui!
>>>>>>>
>>>>>>> I just upgraded the code to work properly with latest Jersey release
>>>>>>>
>>>>>>> Below the swift example code (just tested and working with HPCloud)
>>>>>>>
>>>>>>> Hope it helps you :)
>>>>>>>
>>>>>>> private static final File TEST_FILE = new File("pom.xml");
>>>>>>>
>>>>>>> private static final String KEYSTONE_AUTH_URL = "
>>>>>>> https://region-a.geo-1.identity.hpcloudsvc.com:35357/v2.0";
>>>>>>>
>>>>>>> private static final String KEYSTONE_USERNAME = "";
>>>>>>>
>>>>>>> private static final String KEYSTONE_PASSWORD = "";
>>>>>>>
>>>>>>>
>>>>>>> /**
>>>>>>>
>>>>>>> * @param args
>>>>>>>
>>>>>>> */
>>>>>>>
>>>>>>> public static void main(String[] args) throws Exception {
>>>>>>>
>>>>>>> KeystoneClient keystone = new KeystoneClient(KEYSTONE_AUTH_URL);
>>>>>>>
>>>>>>> //access with unscoped token
>>>>>>>
>>>>>>> Access access =
>>>>>>> keystone.execute(Authenticate.withPasswordCredentials(
>>>>>>> KEYSTONE_USERNAME, KEYSTONE_PASSWORD));
>>>>>>>
>>>>>>> //use the token in the following requests
>>>>>>>
>>>>>>> keystone.setToken(access.getToken().getId());
>>>>>>>
>>>>>>> Tenants tenants = keystone.execute(new ListTenants());
>>>>>>>
>>>>>>> //try to exchange token using the first tenant
>>>>>>>
>>>>>>> if(tenants.getList().size() > 0) {
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> SwiftClient swiftClient = newSwiftClient(KeystoneUtils.findEndpointURL(access.getServiceCatalog(),
>>>>>>> "object-store", null, "public"), access.getToken().getId());
>>>>>>>
>>>>>>> //swiftClient.execute(new DeleteContainer("navidad2"));
>>>>>>>
>>>>>>> swiftClient.execute(new CreateContainer("navidad2"));
>>>>>>>
>>>>>>> System.out.println(swiftClient.execute(new ListContainers()));
>>>>>>>
>>>>>>> ObjectForUpload upload = new ObjectForUpload();
>>>>>>>
>>>>>>> upload.setContainer("navidad2");
>>>>>>>
>>>>>>> upload.setName("example2");
>>>>>>>
>>>>>>> upload.setInputStream(new FileInputStream(TEST_FILE));
>>>>>>>
>>>>>>> swiftClient.execute(new UploadObject(upload));
>>>>>>>
>>>>>>> System.out.println(swiftClient.execute(new ListObjects("navidad2",
>>>>>>> new HashMap<String, String>() {{
>>>>>>>
>>>>>>> put("path", "");
>>>>>>>
>>>>>>> }})).get(0).getContentType());
>>>>>>>
>>>>>>> }
>>>>>>>
>>>>>>>
>>>>>>> }
>>>>>>>
>>>>>>> On Wed, Jan 2, 2013 at 8:01 PM, Gui Maluf <guimalufb at gmail.com>wrote:
>>>>>>>
>>>>>>>> Hey guys,
>>>>>>>> I'm trying to extend a software project<https://github.com/VirtualCloudDrive/CloudDrive>to talk with Swift.
>>>>>>>>
>>>>>>>> This project was developed on Scala, and my issue is: how should I
>>>>>>>> access Swift resource? Should I use openstack-java-sdk<https://github.com/woorea/openstack-java-sdk/>,
>>>>>>>> jclouds<http://www.jclouds.org/documentation/quickstart/openstack/>or develop my own library to access the REST API?
>>>>>>>> I've tried to use openstack-java-sdk but I wasn't able to import
>>>>>>>> the libraries exposed at examples.
>>>>>>>>
>>>>>>>> I'm really confuse about that and I'll appreciate any help, hint,
>>>>>>>> advice!
>>>>>>>>
>>>>>>>> Thanks in advance.!
>>>>>>>>
>>>>>>>> --
>>>>>>>> *guilherme* \n
>>>>>>>> \t *maluf*
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> Mailing list: https://launchpad.net/~openstack
>>>>>>>> Post to : openstack at lists.launchpad.net
>>>>>>>> Unsubscribe : https://launchpad.net/~openstack
>>>>>>>> More help : https://help.launchpad.net/ListHelp
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> -------------------------------------------
>>>>>>> Luis Alberto Gervaso Martin
>>>>>>> Woorea Solutions, S.L
>>>>>>> CEO & CTO
>>>>>>> mobile: (+34) 627983344
>>>>>>> luis@ <luis.gervaso at gmail.com>woorea.es
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> *guilherme* \n
>>>>>> \t *maluf*
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> *guilherme* \n
>>>>> \t *maluf*
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> -------------------------------------------
>>>> Luis Alberto Gervaso Martin
>>>> Woorea Solutions, S.L
>>>> CEO & CTO
>>>> mobile: (+34) 627983344
>>>> luis@ <luis.gervaso at gmail.com>woorea.es
>>>>
>>>
>>>
>>>
>>> --
>>> *guilherme* \n
>>> \t *maluf*
>>>
>>
>>
>>
>> --
>> -------------------------------------------
>> Luis Alberto Gervaso Martin
>> Woorea Solutions, S.L
>> CEO & CTO
>> mobile: (+34) 627983344
>> luis@ <luis.gervaso at gmail.com>woorea.es
>>
>
>
>
> --
> *guilherme* \n
> \t *maluf*
>
--
-------------------------------------------
Luis Alberto Gervaso Martin
Woorea Solutions, S.L
CEO & CTO
mobile: (+34) 627983344
luis@ <luis.gervaso at gmail.com>woorea.es
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack/attachments/20130110/86fef4b8/attachment.html>
More information about the Openstack
mailing list