谷歌地图API v2类未找到。

7

我正在使用谷歌地图API V2,一切都很正常。今天早上我更新了SDK,现在地图不能工作。尝试了很多事情,如重新导入库项目等,但都没有起作用。请帮忙。

以下是logcat输出:

05-16 08:53:34.327: E/dalvikvm(3422): Could not find class  'com.google.android.gms.maps.model.LatLng', referenced from method  com.apptree.de_luxe.InfoActivity.<clinit>
05-16 08:53:34.327: W/dalvikvm(3422): VFY: unable to resolve new-instance 170 (Lcom/google/android/gms/maps/model/LatLng;) in Lcom/apptree/de_luxe/InfoActivity;
05-16 08:53:34.327: D/dalvikvm(3422): VFY: replacing opcode 0x22 at 0x0000
05-16 08:53:34.327: E/dalvikvm(3422): Could not find class 'com.google.android.gms.maps.model.MarkerOptions', referenced from method com.apptree.de_luxe.InfoActivity.setUpMap
05-16 08:53:34.327: W/dalvikvm(3422): VFY: unable to resolve new-instance 172 (Lcom/google/android/gms/maps/model/MarkerOptions;) in Lcom/apptree/de_luxe/InfoActivity;
05-16 08:53:34.327: D/dalvikvm(3422): VFY: replacing opcode 0x22 at 0x0002
05-16 08:53:34.347: E/dalvikvm(3422): Could not find class 'com.google.android.gms.maps.MapFragment', referenced from method com.apptree.de_luxe.InfoActivity.setUpMapIfNeeded
05-16 08:53:34.347: W/dalvikvm(3422): VFY: unable to resolve check-cast 169 (Lcom/google/android/gms/maps/MapFragment;) in Lcom/apptree/de_luxe/InfoActivity;
05-16 08:53:34.357: D/dalvikvm(3422): VFY: replacing opcode 0x1f at 0x000f
05-16 08:53:34.367: D/dalvikvm(3422): DexOpt: unable to opt direct call 0x029b at 0x0c in Lcom/apptree/de_luxe/InfoActivity;.<clinit>
05-16 08:53:34.367: D/dalvikvm(3422): DexOpt: unable to opt direct call 0x029c at 0x04 in Lcom/apptree/de_luxe/InfoActivity;.setUpMap
05-16 08:53:34.387: W/dalvikvm(3422): Exception Ljava/lang/NoClassDefFoundError; thrown while initializing Lcom/apptree/de_luxe/InfoActivity;
05-16 08:53:34.387: W/dalvikvm(3422): Class init failed in newInstance call (Lcom/apptree/de_luxe/InfoActivity;)
05-16 08:53:34.387: D/AndroidRuntime(3422): Shutting down VM
05-16 08:53:34.398: W/dalvikvm(3422): threadid=1: thread exiting with uncaught exception (group=0x40a71930)
05-16 08:53:34.457: E/AndroidRuntime(3422): FATAL EXCEPTION: main
05-16 08:53:34.457: E/AndroidRuntime(3422): java.lang.ExceptionInInitializerError
05-16 08:53:34.457: E/AndroidRuntime(3422):     at java.lang.Class.newInstanceImpl(Native Method)
05-16 08:53:34.457: E/AndroidRuntime(3422):     at java.lang.Class.newInstance(Class.java:1319)
05-16 08:53:34.457: E/AndroidRuntime(3422):     at android.app.Instrumentation.newActivity(Instrumentation.java:1054)
05-16 08:53:34.457: E/AndroidRuntime(3422):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2097)
05-16 08:53:34.457: E/AndroidRuntime(3422):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
05-16 08:53:34.457: E/AndroidRuntime(3422):     at android.app.ActivityThread.access$600(ActivityThread.java:141)
05-16 08:53:34.457: E/AndroidRuntime(3422):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
05-16 08:53:34.457: E/AndroidRuntime(3422):     at android.os.Handler.dispatchMessage(Handler.java:99)
05-16 08:53:34.457: E/AndroidRuntime(3422):     at android.os.Looper.loop(Looper.java:137)
05-16 08:53:34.457: E/AndroidRuntime(3422):     at android.app.ActivityThread.main(ActivityThread.java:5041)
05-16 08:53:34.457: E/AndroidRuntime(3422):     at java.lang.reflect.Method.invokeNative(Native Method)
05-16 08:53:34.457: E/AndroidRuntime(3422):     at java.lang.reflect.Method.invoke(Method.java:511)
05-16 08:53:34.457: E/AndroidRuntime(3422):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
05-16 08:53:34.457: E/AndroidRuntime(3422):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
05-16 08:53:34.457: E/AndroidRuntime(3422):     at dalvik.system.NativeStart.main(Native Method)
05-16 08:53:34.457: E/AndroidRuntime(3422): Caused by: java.lang.NoClassDefFoundError: com.google.android.gms.maps.model.LatLng
05-16 08:53:34.457: E/AndroidRuntime(3422):     at com.apptree.de_luxe.InfoActivity.<clinit>(InfoActivity.java:35)
05-16 08:53:34.457: E/AndroidRuntime(3422):     ... 15 more

你在你的Android地图项目中引用了Google Play服务库吗? - Raghunandan
@Ravi Raghunandan是正确的...你应该将google-play-services_lib正确地引用到你的项目中。 - TheFlash
我已经完成了这个任务。在 Android 的属性中,我添加了库项目并且目标是 Google API。 - Ravi
你是否参考了以下的库项目? - Raghunandan
你用什么键来创建你的Map key?那是你Eclipse的默认键吗? - Vivek Kumar Srivastava
没有,我在 Google API 控制台创建了一个密钥。 - Ravi
2个回答

22

在Eclipse中,依次点击:

"项目"-> "属性" -> "Java构建属性"

在"顺序和导出"选项卡中,我勾选了我的项目中的 "Android私有库",我还为其引用的库项目进行了同样的操作。这解决了我在升级到SDK 22后出现的类未找到错误。


+1 我刚更新后也遇到了同样的问题,但已经解决了。 - Raghunandan
此外,您需要Android SDK Build工具来使用ADT 22。 - Kanwal Sarwara
我必须为我所有的库项目做这件事。不过那可是紧张的二十分钟,哈哈。 - James andresakis
我还必须更改顺序。我将“android私有库”下移,使它们位于实际库下方但在“android依赖项”上方。通过这一额外步骤,它成功了。 - Stan

4

您需要在地图项目中引用Google Play服务库项目。

将库项目导入您的工作区,并将其同样导入Eclipse。

右键单击您的项目,进入属性。选择Android,点击Android,浏览并添加库项目。

enter image description here


你在导入新库之前,是否已经从当前工作区中删除了旧的库? - Mehul Joisar
是的,我已经删除了所有内容,还有一个更重要的是,在今天之前它可以在没有导入到我的工作区的情况下工作,但在更新后无论如何都不起作用。 - Ravi
@Ravi 奇怪的是,上述是引用库项目的推荐方式。我需要注意这种行为。 - Raghunandan
我知道这很糟糕,我使用了几个库项目,并按照你告诉我的方式引用它们,它们一直都能正常工作,但我不知道在更新到SDK 22之后发生了什么变化。 - Ravi
如何从Google获取:Map Fragment / MapView v2快速入门 https://docs.google.com/document/pub?id=19nQzvKP-CVLd7_VrpwnHfl-AE9fjbJySowONZZtNHzw - Hugo Matilla
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接