【问题标题】:NoClassDefFoundError on Android 2.1 only, using Guava Library仅 Android 2.1 上的 NoClassDefFoundError,使用 Guava 库
【发布时间】:2012-11-12 12:10:36
【问题描述】:

我编写了一个使用 Guava 库的 Android 应用。

该应用在 Android 4(虚拟机和真实设备)上运行良好。

但是,当我尝试在运行 Android 2.1 的虚拟机上启动应用程序时,我收到以下错误:

java.lang.NoClassDefFoundError: com.google.common.collect.ImmutableSortedMap

我玩过库导入。背后的想法:旧版本的 Android 可能会以不同的方式处理 jar。这里没有成功。

值得一提的是,该应用程序是对已使用 Guava 的先前版本的更新。以前的版本在所有设备上都能正常工作,但没有使用 ImmutableSortedMap 对象,而只是使用了 ImmutableList。 手机是否有可能正在加载他自己版本的 Guava 库(可能不包含 ImmutableSortedMap)?

我正在使用带有 ADT 20 的 Eclipse。这是我的库在 Eclipse 包资源管理器中的样子:

提前谢谢你!

【问题讨论】:

  • 您是否在 java 构建路径向导中选中了这些复选框?
  • 是的,我尝试检查和取消选中它们。没有变化:-(

标签: java android guava noclassdeffounderror


【解决方案1】:

您可能需要使用guava-jdk5 back port。在较新版本的 Guava 中,ImmutableSortedMap 实现了在 JDK6 中引入的NavigableMapNavigableMap 在早期版本的 Android 中不受支持——特别是包括 2.1; NavigableMap 从 Android 2.3 Gingerbread 开始在 Android 上发布,看起来像。

(在 backport 中,ImmutableSortedMap 支持所有 NavigableMap 方法;它实际上并没有实现 NavigableMap。)

【讨论】:

  • 感谢您的帮助,感谢 Google Core Java 库团队的工作!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-20
  • 2016-09-24
  • 2011-12-21
  • 2012-01-30
  • 1970-01-01
  • 2023-03-26
相关资源
最近更新 更多