2012-12-26 149 views
0

我正在使用riak。试图从Java访问它。下面是代码:Riak Java客户端无法编译

package eee.xxx; 

import com.basho.riak.client.IRiakClient; 
import com.basho.riak.client.RiakException; 
import com.basho.riak.client.RiakFactory; 
import com.basho.riak.client.bucket.Bucket; 

public class Main { 

    /** 
    * @param args 
    * @throws RiakException 
    */ 
    public static void main(String[] args) throws RiakException { 
     IRiakClient myClient = RiakFactory.httpClient("127.0.0.1"); 
     Bucket myBucket = myClient.fetchBucket("Pacan").execute(); 
    } 

} 

并编译之后,它会抛出这样的错误:

Exception in thread "main" java.lang.NoClassDefFoundError: org/json/JSONException 
    at com.basho.riak.client.raw.http.HTTPClientAdapter.<init>(HTTPClientAdapter.java:85) 
    at com.basho.riak.client.RiakFactory.httpClient(RiakFactory.java:144) 
    at eee.xxx.Main.main(Main.java:18) 
Caused by: java.lang.ClassNotFoundException: org.json.JSONException 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
    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 java.lang.ClassLoader.loadClass(ClassLoader.java:423) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356) 
    ... 3 more 

我不知道如何解决这个问题。请帮忙! :-)

回答

1

Riak有多个3 rd方库依赖关系,其中之一是标准的JSON库,您似乎缺少它。它需要在编译&运行时的类路径中可用。它可以被发现here

由于有大约8依赖性很容易让Maven对此进行管理您通过添加相关性:

<dependency> 
    <groupId>com.basho.riak</groupId> 
    <artifactId>riak-client</artifactId> 
    <version>1.0.6</version> 
</dependency> 
+0

是啊,谢谢,它为我工作:)但我有新的1瓦特例外:)在异常线程“main”java.lang.NoClassDefFoundError:org/apache/http/client/methods/HttpPost – PAcan

+0

这是另一个依赖的jar,你缺少'httpclient'。转到[Maven Riak页面](http://mvnrepository.com/artifact/com.basho.riak/riak-client/1.0.6),然后单击_artifact_,然后下载“binary”重新失踪。 – Reimeus

+0

非常感谢! – PAcan