仅使用Guava Library在Android 2.1上使用NoClassDefFoundError

时间:2012-11-12 12:10:36

标签: java android guava noclassdeffounderror

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

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

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

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

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

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

我正在使用Eclipse和ADT 20.这是我的库在Eclipse包浏览器中的样子:

Eclipse package explorer.

提前谢谢!

1 个答案:

答案 0 :(得分:5)

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

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