Android Google Map API v2 NoClassDefFoundError错误

时间:2013-07-26 12:40:27

标签: android google-maps

我下载了谷歌地图api v2样本,并按照谷歌网站上的官方教程(已安装并添加了谷歌播放服务),但运行样本时出现NoClassDefFoundError错误

07-26 02:01:04.821: I/Process(620): Sending signal. PID: 620 SIG: 9
07-26 02:01:18.559: W/dalvikvm(682): Unable to resolve superclass of Lcom/example/mapdemo/BasicMapActivity; (80)
07-26 02:01:18.559: W/dalvikvm(682): Link of class 'Lcom/example/mapdemo/BasicMapActivity;' failed
07-26 02:01:18.559: E/dalvikvm(682): Could not find class 'com.example.mapdemo.BasicMapActivity', referenced from method com.example.mapdemo.MainActivity.<clinit>
07-26 02:01:18.559: W/dalvikvm(682): VFY: unable to resolve const-class 128 (Lcom/example/mapdemo/BasicMapActivity;) in Lcom/example/mapdemo/MainActivity;
07-26 02:01:18.559: D/dalvikvm(682): VFY: replacing opcode 0x1c at 0x000d
07-26 02:01:18.658: W/dalvikvm(682): Exception Ljava/lang/NoClassDefFoundError; thrown while initializing Lcom/example/mapdemo/MainActivity;
07-26 02:01:18.658: W/dalvikvm(682): Class init failed in newInstance call (Lcom/example/mapdemo/MainActivity;)
07-26 02:01:18.676: D/AndroidRuntime(682): Shutting down VM
07-26 02:01:18.676: W/dalvikvm(682): threadid=1: thread exiting with uncaught exception (group=0x40014760)
07-26 02:01:18.791: E/AndroidRuntime(682): FATAL EXCEPTION: main
07-26 02:01:18.791: E/AndroidRuntime(682): java.lang.ExceptionInInitializerError
07-26 02:01:18.791: E/AndroidRuntime(682):  at java.lang.Class.newInstanceImpl(Native Method)
07-26 02:01:18.791: E/AndroidRuntime(682):  at java.lang.Class.newInstance(Class.java:1301)
07-26 02:01:18.791: E/AndroidRuntime(682):  at android.app.Instrumentation.newActivity(Instrumentation.java:1022)
07-26 02:01:18.791: E/AndroidRuntime(682):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1663)
07-26 02:01:18.791: E/AndroidRuntime(682):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1764)
07-26 02:01:18.791: E/AndroidRuntime(682):  at android.app.ActivityThread.access$1500(ActivityThread.java:122)
07-26 02:01:18.791: E/AndroidRuntime(682):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1002)
07-26 02:01:18.791: E/AndroidRuntime(682):  at android.os.Handler.dispatchMessage(Handler.java:99)
07-26 02:01:18.791: E/AndroidRuntime(682):  at android.os.Looper.loop(Looper.java:132)
07-26 02:01:18.791: E/AndroidRuntime(682):  at android.app.ActivityThread.main(ActivityThread.java:4025)
07-26 02:01:18.791: E/AndroidRuntime(682):  at java.lang.reflect.Method.invokeNative(Native Method)
07-26 02:01:18.791: E/AndroidRuntime(682):  at java.lang.reflect.Method.invoke(Method.java:491)
07-26 02:01:18.791: E/AndroidRuntime(682):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
07-26 02:01:18.791: E/AndroidRuntime(682):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
07-26 02:01:18.791: E/AndroidRuntime(682):  at dalvik.system.NativeStart.main(Native Method)
07-26 02:01:18.791: E/AndroidRuntime(682): Caused by: java.lang.NoClassDefFoundError: com.example.mapdemo.BasicMapActivity
07-26 02:01:18.791: E/AndroidRuntime(682):  at com.example.mapdemo.MainActivity.<clinit>(MainActivity.java:100)
07-26 02:01:18.791: E/AndroidRuntime(682):  ... 15 more
07-26 02:06:18.960: I/Process(682): Sending signal. PID: 682 SIG: 9  

我通过在“Window&gt;偏好设置&gt; Android&gt;构建&gt; SHA 1指纹”和谷歌样本包名称“com.example.mapdemo”中结合SHA 1指纹获得谷歌API密钥

请帮助我,对不起我的英语,非常感谢。


我改变了目标sdk,模拟器是4.0,这个错误消失但我得到一个新的是“Google Play services is missiong”。

然后,我更改了目标sdk,模拟器是4.2.2,我收到错误“谷歌播放服务已过期。需要3159100但找到了3136130”

请帮帮我。

2 个答案:

答案 0 :(得分:1)

  1. 转到项目的“属性”。
  2. 选择“Java Build Path”
  3. 选择“订购和导出”标签
  4. 您应该在此处看到所选项目的“src”和“gen”路径和依赖项。
  5. 他们列出的顺序是第一个“src”然后是“gen”路径
  6. 我切换它们,以便在“src”
  7. 之前构建“gen”文件夹

    参考 https://stackoverflow.com/a/12702315/2398886

答案 1 :(得分:0)

仍然看看属性,而不是切换位置,尝试选择所有的库。

我这样做了,它解决了我的问题。

enter image description here

注意:您现在可以运行Map API示例代码,但模拟器中的Google Map应用程序仍然不显示任何内容。如果您想要运行此应用,则需要先安装Google Play服务应用。