android - 使用 RoboSpice 的 OkHttpBitmapSpiceManager 从 URL 加载图像时出现 NoClassDefFoundError

标签 android asynchronous noclassdeffounderror robospice

我正在创建一个 Android 应用程序,它使用 RoboSpice 进行异步网络调用。虽然我没有使用 RoboSpice 的经验,但我选择 RoboSpice 是因为它被认为是互联网上最好的之一,而且它可以自动将 JSON 转换为 POJO。不幸的是,RoboSpice 的文档质量有点差。因此我的问题是:

我已成功使用 RoboSpice 对 REST GET 方法进行网络调用,自动将 JSON 解析为 POJO,并在 Android ViewPager 中显示检索到的对象列表。我正在使用 Jackson2GoogleHttpClientSpiceService 来执行此操作。现在,在这个 ViewPager 中我也显示了一张图像。显然,我想使用 RoboSpice 下载此图像。我用过 RoboSpice examples 之一(它使用 OkHttpBitmapSpiceManager 下载图像)作为指南,并据此我已将此行添加到我的 Activity 中:

private OkHttpBitmapSpiceManager spiceManagerBinary = new OkHttpBitmapSpiceManager();

此外,我已将此行添加到 list 中:

<service
        android:name="com.octo.android.robospice.spicelist.okhttp.OkHttpBitmapSpiceService"
        android:exported="false" />

现在,由于我的 Android 项目没有使用 Maven,因此我必须将以下 jar 添加到我的项目中:robospice-ui-spicelist-1.4.9.jar(我已经显然添加了使用 Jackson2GoogleHttpClientSpiceService 所需的所有其他 jar,它可以工作)。

问题是,应用程序甚至无法启动。每当我删除(或注释)包含 new OkHttpBitmapSpiceManager() 的行时,应用程序都会完美运行。显然,调用构造函数是导致应用程序崩溃的原因。我从 logcat 收到以下错误:

java.lang.NoClassDefFoundError: com.octo.android.robospice.spicelist.okhttp.OkHttpBitmapSpiceService

对我来说,这个错误似乎与丢失的 jar 或其他东西有关。但我已经根据文档添加了所有必要的 jar 。有 RoboSpice 经验的人可以向我解释我在这里做错了什么吗?我应该添加更多 jar 还是缺少其他东西?或者我应该使用完全不同的方法使用 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
  • Guava -jdk5-13.0.jar
  • jackson-core-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-spicelist-1.4.9.jar

最佳答案

问题是您没有使用包含服务类的 jar:com.octo.android.robospice.spicelist.okhttp.OkHttpBitmapSpiceService

它不包含在 robospice-ui-spice-list 中,而是包含在 robospice-okhttp 中。如果您包含此 jar,您将获得您需要的服务。

看看this sample .

另外,请不要下载图像,使用非 okhttp 相关的类会更容易。 RS 在 its core package 中提供简单的二进制请求.

哦,顺便说一句,当您说“RS 文档有点差”时,请立即通过 github 或邮件列表告诉我们您希望如何使其更完整。我们还接受拉取请求,即使只是为了文档。

关于android - 使用 RoboSpice 的 OkHttpBitmapSpiceManager 从 URL 加载图像时出现 NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19894869/

相关文章:

android - 我想在强制关闭应用程序后运行服务和广播接收器

iphone - 移动应用程序中的 OAuth secret

javascript - 在 Node 的 for 循环中异步运行函数 x 次

javascript - 通过 Javascript 中的 promise 链传递状态有哪些模式?

c# - 任务和 TAP 异步模式 : differences bwteewn factory. StartNew 和 TaskEx.Run

java - 为什么在Weka中使用libsvm时出现 "NoClassDefFoundError:libsvm/svm_print_interface"错误?

tomcat - weblogic 中的 NoClassDefFoundError 异常

javascript读取新的rss条目并创建通知

android - javafxports如何调用android原生的Media Player

java - 没有找到类定义