【问题标题】:Google Maps Android API v2 - Sample Code crashesGoogle Maps Android API v2 - 示例代码崩溃
【发布时间】:2012-11-23 21:49:14
【问题描述】:

我正在尝试让 Android 'Google Maps Android API v2' 的 sample code 工作。我得到的项目没有错误。但是,当我尝试在我的 Galaxy Nexus(通过 USB 连接到我的笔记本电脑)上运行该应用程序时,该应用程序立即崩溃。

  • 我在 AndroidManifest.xml 中填写了自己的 Maps API 密钥
  • 我针对 Android 4.1.2 构建

这是日志记录:

Unable to resolve superclass of Lcom/example/mapdemo/BasicMapActivity; (66) 
Link of class 'Lcom/example/mapdemo/BasicMapActivity;' failed 
Could not find class 'com.example.mapdemo.BasicMapActivity', referenced from method com.example.mapdemo.MainActivity.<clinit> 
VFY: unable to resolve const-class 108 (Lcom/example/mapdemo/BasicMapActivity;) in Lcom/example/mapdemo/MainActivity; 
VFY: replacing opcode 0x1c at 0x000d 
Exception Ljava/lang/NoClassDefFoundError; thrown while initializing Lcom/example/mapdemo/MainActivity; 
Class init failed in newInstance call (Lcom/example/mapdemo/MainActivity;) 
Shutting down VM 
threadid=1: thread exiting with uncaught exception (group=0x41ac9930) 
FATAL EXCEPTION: main 
java.lang.ExceptionInInitializerError
at java.lang.Class.newInstanceImpl(Native Method)
at java.lang.Class.newInstance(Class.java:1319)
at android.app.Instrumentation.newActivity(Instrumentation.java:1054)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2097)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5039)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.NoClassDefFoundError: com.example.mapdemo.BasicMapActivity
at com.example.mapdemo.MainActivity.<clinit>(MainActivity.java:97)
... 15 more

有没有人提示如何解决这个问题或我可能做错了什么?

【问题讨论】:

  • 发布的堆栈跟踪中的第一行:Unable to resolve superclass of Lcom/example/mapdemo/BasicMapActivity。看起来你让BasicMapActivity 扩展了错误的类。

标签: android crash maps sample google-maps-android-api-2


【解决方案1】:
  1. 在新工作区中试用相同的示例代码。

  2. 您甚至可以复制并粘贴示例地图项目和 google play services-lib 项目 (/extras/google/google_play_services/libproject/google-play-services_lib,) 并将其粘贴到新的工作区中。

  3. 之后不要忘记从 SDK 添加所需的 JAR 文件。 (“android-support-v4.jar”位于您的“/extras/android/compatibility/v4/android-support-v4.jar”下 “android-sdk”目录。)

【讨论】:

    【解决方案2】:

    我也有同样的问题。 文件“import-summary.txt”有答案。 就我而言,我已将 eclipse 项目导入到路径名中带有空格的路径中。这会导致向导出现问题。 创建了新路径。重新导入项目。然后构建/重建项目。 没问题。

    【讨论】:

      【解决方案3】:
      1. 通过谷歌关注sample code instructions
      2. 并像这样设置Java构建路径:

      【讨论】:

        【解决方案4】:

        发生这种情况是因为对如何导入项目有很多困惑。文档 https://developers.google.com/maps/documentation/android/intro#sample_code 说您不应该在任何时候选择“将项目复制到工作区”,并且为了让示例运行,这是您需要坚持的。不要为播放服务和示例选择此选项 - 将它们留在原处。

        在您导入两者后,请检查以下内容:

        1. 右键单击 MainActivity 项目并选择属性
        2. 转到 Android 并确保在 google-play-services-lib 旁边看到一个绿色勾号 (播放服务库不应作为 jar 添加 - 而应作为 Android 库添加)
        3. 转到 Java 构建路径并在库部分导入外部 jar (android-support-v4.jar)
        4. [重要] 在 Java 构建路径中转到 Order and Export 并确保 android-support-v4.jar 旁边有一个勾号(默认情况下不会发生,这就是您看到错误的原因你在顶部提到的)
        5. 确保在进行更改后清理并构建项目,这样您就不会最终尝试修复有效但根本没有被推动的东西。

        【讨论】:

          【解决方案5】:

          我遇到了同样的问题,无法解决。最后,我从另一台机器上获取了示例项目文件夹,将其复制到我的并加载了我从另一台机器上获取的新项目。然后一切正常。我试图通过比较 2 个示例项目来跟踪问题,但不能。无论如何,我从另一台机器上获取的新示例项目运行良好。

          【讨论】:

            【解决方案6】:

            我遇到了同样的问题,我做了以下解决问题。

            1. 转到项目的“属性”。
            2. 选择“Java 构建路径”
            3. 选择“订购和导出”选项卡
            4. 您应该在此处看到所选项目的“src”和“gen”路径和依赖项。

            他们列出的顺序是首先“src”然后是“gen”路径我切换它们,以便在“src”之前构建“gen”文件夹

            然后“检查”列出的每一项

            见: NoClassDefFoundError for code in an Java library on Android

            【讨论】:

              【解决方案7】:

              通过谷歌关注next sample code instructions

              跳过“4”部分,并按照以下说明进行操作:

              • 将新文件夹添加到名为“libs”的项目中
              • 复制 google-play-services.jar 表单:

                “android-sdk-文件夹\extras\google\google_play_services\libproject\google-play-services_lib\libs”

                到“libs”文件夹 --> 在这个文件夹中右键单击这个 jar --> 构建路径 --> 添加到构建路径。

              • 复制android-support-v4.jar表格:

                "android-sdk-文件夹\extras\android\support\v4"

                到“libs”文件夹 --> 右键单击​​该文件夹中的这个 jar --> 构建路径 --> 添加到构建路径。

              “android-sdk-folder”通常看起来像:“C:\Users\User_Name\android-sdks”

              【讨论】:

                【解决方案8】:

                非常非常仔细地遵循婴儿床单:
                https://docs.google.com/document/pub?id=19nQzvKP-CVLd7_VrpwnHfl-AE9fjbJySowONZZtNHzw

                我认为您尤其需要:

                • 导入“google-play-services_lib”项目的实际源代码并将其链接为 Android 库。
                  • 通过项目 -> 属性 -> Android -> 库,添加 -> google-play-services_lib 执行此操作(您可以右键单击您的项目并选择属性,然后选择 Android)。
                  • 不要通过您的项目的“Java 构建路径”将其添加为依赖项目,这对我不起作用。
                • 将 google-play-services.jar 和 android-support-v4.jar 添加到示例项目中的“libs”文件夹中,并在“构建路径 -> 配置构建路径”中将它们添加为“外部外部 JAR” - > 图书馆”。

                我发现第二步是必要的,因为我在尝试使用示例代码时遇到了与您完全相同的错误。第一步是在我的实际项目中避免com.google.android.gms.R$styleable 中的NoClassDefFoundError 是必要的。

                在示例代码运行之前,我还需要执行干净构建并从设备上卸载应用程序(来自早期的测试尝试)。

                【讨论】:

                • 谢谢!我确实不得不将 android-support-v4.jar 放在一个新的“libs”文件夹中。 (在我将此 jar 添加为外部 jar 依赖项之前。)现在应用程序不再崩溃。
                • 谢谢,它对我有用。顺便说一句:Android 上有什么东西真的可以工作吗?还是你需要解决所有问题?
                • 不幸的是,这些步骤对我不起作用。然后我按照 John Oleynik 的步骤(如下:stackoverflow.com/a/15709686/20146),并且成功了。
                • 只有当我从 libs 目录中删除 google-play-services.jar 时才为我工作。您的所有其他步骤都有效。
                • @alexx 你的评论拯救了我的一天:),谢谢
                猜你喜欢
                • 1970-01-01
                • 2013-10-03
                • 1970-01-01
                • 1970-01-01
                • 2013-12-14
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多