1

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

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

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

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

我玩过图书馆的进口。背后的想法:旧版本的 Android 可能会以不同的方式处理 jars。这里没有成功。

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

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

Eclipse 包资源管理器。

先感谢您!

4

1 回答 1

5

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

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

于 2012-11-12T16:35:32.200 回答