NoClassDefFoundError:android.support.v4.util.ArrayMap

时间:2016-01-11 16:30:16

标签: java android eclipse

在JellyBean上获取此错误:

01-11 18:26:52.030: E/AndroidRuntime(16517): FATAL EXCEPTION: main
01-11 18:26:52.030: E/AndroidRuntime(16517): java.lang.NoClassDefFoundError: android.support.v4.util.ArrayMap
01-11 18:26:52.030: E/AndroidRuntime(16517):    at com.google.android.gms.common.api.GoogleApiClient$Builder.<init>(Unknown Source)
01-11 18:26:52.030: E/AndroidRuntime(16517):    at com.example.services.LocationService.initGoogleApiClient(LocationService.java:82)
01-11 18:26:52.030: E/AndroidRuntime(16517):    at com.example.services.LocationService.start(LocationService.java:73)

该项目仍然使用Eclipse。

关于这个问题有两个问题,以对我的情况没有帮助的方式解决:

Crash with Android 4.1 with ArrayMap - 我无法更改在我的案例中崩溃的Google代码

Android error - Caused by: java.lang.NoClassDefFoundError: android.support.v4.util.SparseArrayCompat - 它已被勾选,但无效

3 个答案:

答案 0 :(得分:6)

通常,关于缺少android.support类的问题意味着您拥有受影响库的旧版本,其中一个版本来自相关课程之前的版本。不幸的是,JavaDocs在指示哪个版本的支持库添加了更新的类时表现不佳。

如果您使用的是Android Studio,请确保您的support-依赖项是相当新的,并且您的compileSdkVersion与依赖项的主要版本号相匹配。

如果您使用的是Eclipse,则不仅要从SDK Manager下载最新的库,还要从Eclipse项目中删除旧库,并从SDK中添加库的最新副本安装。

答案 1 :(得分:0)

根据官方谷歌文档,当我将google-play-services_lib库项目(来自ASDK附加组件)添加到我的IDE(IntellyJ Idea)时,发生了这种情况。库项目引用了google-play-services.jar,而google-play-services_lib又需要support-v4 jar,但这种依赖关系不包含在{{1}}中。

在logcat中还有其他关于缺少support-v4类的警告。

手动将support-v4 jar添加到主应用程序项目中解决了这个问题。

答案 2 :(得分:-4)

右键点击您的项目 - &gt;构建路径 - &gt;配置构建路径 - &gt;订单和导出标签。

确保选中“Android私有库”进行导出。

如果您已从libs /文件夹中添加了任何库,请将其删除,因为它们会自动添加到“Android私有库”部分中。

复制:https://stackoverflow.com/a/16641790/5243214