我正在创建一个使用 RoboSpice 进行异步网络调用的 Android 应用程序。虽然我没有使用 RoboSpice 的经验,但我选择了 RoboSpice,因为它被认为是 Internet 上最好的之一,而且它可以自动将 JSON 转换为 POJO。不幸的是,RoboSpice 的文档质量有点差。因此我的问题:
我已成功使用 RoboSpice 对 REST GET 方法进行网络调用,自动将 JSON 解析为 POJO,并在 Android ViewPager 中显示检索到的对象列表。我正在使用Jackson2GoogleHttpClientSpiceService来执行此操作。现在,在这个 ViewPager 中,我也展示了一张图片。显然,我想使用 RoboSpice 下载此图像。我使用了RoboSpice 示例之一(它使用 OkHttpBitmapSpiceManager 下载图像)作为指南,并据此将这一行添加到我的活动中:
private OkHttpBitmapSpiceManager spiceManagerBinary = new OkHttpBitmapSpiceManager();
此外,我已将此行添加到清单中:
<service
android:name="com.octo.android.robospice.spicelist.okhttp.OkHttpBitmapSpiceService"
android:exported="false" />
现在,由于我没有在我的 Android 项目中使用 maven,我不得不将以下 jar 添加到我的项目中:robospice-ui-spicelist-1.4.9.jar(我显然添加了所有其他必要的 jar 以使用Jackson2GoogleHttpClientSpiceService,有效)。
问题是,应用程序甚至无法启动。每当我删除(或评论)包含new OkHttpBitmapSpiceManager()
应用程序的行时,它都能完美运行。所以显然调用构造函数是导致应用程序崩溃的原因。我从 logcat 收到以下错误:
java.lang.NoClassDefFoundError: com.octo.android.robospice.spicelist.okhttp.OkHttpBitmapSpiceService
对我来说,这个错误似乎与缺少 jar 或其他东西有关。但是我已经根据文档添加了所有必要的 jar。有 RoboSpice 经验的人可以向我解释我在这里做错了什么吗?我应该添加更多的罐子还是我错过了其他东西?或者我什至应该使用完全不同的方法来使用 RoboSpice 从 URL 加载图像?
编辑!
为了更清楚,我已将以下 jar 添加到我的 libs 文件夹和构建路径中:
- commons-io-1.3.2.jar
- commons-lang3-3.1.jar
- google-http-client-1.17.0-rc.jar
- google-http-client-android-1.17.0-rc.jar
- google-http-client-jackson2-1.17.0-rc.jar
- 番石榴-jdk5-13.0.jar
- 杰克逊核心2.1.3.jar
- jsr305-1.3.9.jar
- robospice-1.4.9.jar
- robospice-cache-1.4.9.jar
- robospice-google-http-client-1.4.9.jar
- robospice-ui-slicelist-1.4.9.jar