2011-06-15 69 views
3

我试图用爱克托CouchDB的库Android应用中,我总是得到这样的例外:EKTORP NoClassDefFoundError的:org.ektorp.impl.docref.DocumentReferenceSerializerProvider

java.lang.NoClassDefFoundError: org.ektorp.impl.docref.DocumentReferenceSerializerProvider 

这里是我的代码:

HttpClient authenticatedHttpClient = new StdHttpClient.Builder().host("myhostname").port(5984).username("username").password("password").build(); 
CouchDbInstance dbInstance = new StdCouchDbInstance(authenticatedHttpClient); 
CouchDbConnector db = dbInstance.createConnector("luscinia", true); 

上述代码的最后一行总是出现异常。

我跟有关相关的erktop维基这里:http://code.google.com/p/ektorp/wiki/dependencies

导致包含我的项目:

  • 公地IO-2.0.1.jar
  • HttpClient的-4.1.1.jar
  • 杰克逊核-ASL-1.8.1.jar
  • 杰克逊映射器-ASL-1.8.1.jar
  • org.ektorp-1.1 .1.jar
  • SLF4J-API-1.6.1.jar
  • SLF4J-简单1.6.1.jar(SLF4J失败没有它)

logcat的给了我一个警告,之前的错误行例外,也许他们可以帮助:

Link of class 'Lorg/ektorp/impl/docref/DocumentReferenceSerializerProvider;' failed 
Could not find class 'org.ektorp.impl.docref.DocumentReferenceSerializerProvider', referenced from method org.ektorp.impl.StdObjectMapperFactory.createObjectMapper 

我不明白他们的意思。 有什么想法?

回答

4

恐怕Ektorp 1.1.1与Jackson 1.8不兼容。 今年夏天将在1.2.0版本中修复。同时使用杰克逊1.7.7。

+0

我刚刚意识到这一点,并在我收到你的推文时在这里回答。道德,只需使用维基页面。谢谢。 – Arnaud 2011-06-15 15:52:36

0

我不是专家的java编码器,但我想象它的java对象在异常之前扩展不是在android上运行的java实现的一部分。 Dalvik不是标准的jvm。 我推荐这个https://github.com/couchone/libcouch-android图书馆的沙发在android上。

+0

我检查并且org.ektorp-1.1.1.jar依赖项中存在“org.ektorp.impl.docref.DocumentReferenceSerializerProvider”。 我已经在使用libcouch对CouchDB执行操作,例如启动/停止它。 AndCouch类旨在用于与基本的HTTP请求进行通信,但正如AndCouch类的注释中所述,“AndCouch是一个非常简单的用于CouchDB的http包装库”。 我想使用基于Jackson的Erktop来处理我的文档。 – Arnaud 2011-06-15 14:49:24