我正在尝试在 Android 应用程序中使用 Ektorp CouchDB 库,但我总是遇到此异常:
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 wiki 上关注了这里的依赖项:http://code.google.com/p/ektorp/wiki/dependencies
这导致我的项目包含:
- commons-io-2.0.1.jar
- httpclient-4.1.1.jar
- jackson-core-asl-1.8.1.jar
- jackson-mapper-asl-1.8.1.jar
- org.ektorp-1.1.1.jar
- slf4j-api-1.6.1.jar
- slf4j-simple-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
我不明白他们的意思。有什么想法吗?
恐怕 Ektorp 1.1.1 与 Jackson 1.8 不兼容。这将在今年夏天发布的 1.2.0 版本中得到修复。同时使用 Jackson 1.7.7。
我是一名优秀的程序员,十分优秀!