【问题标题】:Android google maps "NoClassDefFound"Android 谷歌地图“NoClassDefFounderror”
【发布时间】:2012-03-08 02:38:14
【问题描述】:

我已经将<uses-library android:name="com.google.android.maps" /> 放入 应用程序标签。

当我试图转移到这个活动时,我遇到了崩溃。

这是我的 java 文件:

**

import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
import android.os.Bundle;

public class MyMap extends MapActivity {   

    @Override  
    public void onCreate(Bundle savedInstanceState) { 

        super.onCreate(savedInstanceState);  
        setContentView(R.layout.mapactivity);  
    }  

    @Override  
    protected boolean isRouteDisplayed() {  
        return false;  
    }  
}

这是我的 xml 文件:(在 my_api_key 我有自己的密钥,我从 google 获得的)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <com.google.android.maps.MapView
    android:id="@+id/mapview1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:enabled="true"
    android:clickable="true"
    android:apiKey="my_api_key" />


</RelativeLayout>

当我在 Eclipse 中进入编辑器时,我看到: http://i.stack.imgur.com/eUUHb.jpg

谢谢。

完整的堆栈跟踪: 03-08 07:06:10.554: E/AndroidRuntime(18227): java.lang.NoClassDefFoundError: Fproj.dnlgby.MyMap 03-08 07:06:10.554: E/AndroidRuntime(18227): 在 Fproj.dnlgby.MenuActivity.onClick(MenuActivity.java:60) 03-08 07:06:10.554: E/AndroidRuntime(18227): 在 android.view.View.performClick(View.java:2496) 03-08 07:06:10.554: E/AndroidRuntime(18227): 在 android.view.View$PerformClick.run(View.java:9120) 03-08 07:06:10.554: E/AndroidRuntime(18227): 在 android.os.Handler.handleCallback(Handler.java:587) 03-08 07:06:10.554: E/AndroidRuntime(18227): 在 android.os.Handler.dispatchMessage(Handler.java:92) 03-08 07:06:10.554: E/AndroidRuntime(18227): 在 android.os.Looper.loop(Looper.java:130) 03-08 07:06:10.554: E/AndroidRuntime(18227): 在 android.app.ActivityThread.main(ActivityThread.java:3859) 03-08 07:06:10.554: E/AndroidRuntime(18227): 在 java.lang.reflect.Method.invokeNative(Native Method) 03-08 07:06:10.554: E/AndroidRuntime(18227): 在 java.lang.reflect.Method.invoke(Method.java:507) 03-08 07:06:10.554: E/AndroidRuntime(18227): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:840) 03-08 07:06:10.554: E/AndroidRuntime(18227): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:598) 03-08 07:06:10.554: E/AndroidRuntime(18227): at dalvik.system.NativeStart.main(Native Method) 03-08 07:06:10.554:E/AndroidRuntime(18227):原因:java.lang.IllegalAccessError:预验证类中的类引用解析为意外实现 03-08 07:06:10.554: E/AndroidRuntime(18227): at dalvik.system.DexFile.defineClass(Native Method) 03-08 07:06:10.554: E/AndroidRuntime(18227): 在 dalvik.system.DexFile.loadClassBinaryName(DexFile.java:207) 03-08 07:06:10.554: E/AndroidRuntime(18227): 在 dalvik.system.PathClassLoader.findClass(PathClassLoader.java:200) 03-08 07:06:10.554: E/AndroidRuntime(18227): 在 java.lang.ClassLoader.loadClass(ClassLoader.java:551) 03-08 07:06:10.554: E/AndroidRuntime(18227): 在 java.lang.ClassLoader.loadClass(ClassLoader.java:511) 03-08 07:06:10.554: E/AndroidRuntime(18227): ... 12 更多

【问题讨论】:

  • 你能发布实际的堆栈跟踪吗?当您说移动班级时,您是什么意思?您链接到的 img 基本上意味着您的样式不在主题中。使用右上角的下拉菜单选择您希望在定义 mapViewStyle 的情况下运行的 Activity 的主题。
  • 发布了完整的堆栈跟踪。谢谢。

标签: java android google-maps android-widget


【解决方案1】:

这是在设备还是模拟器上运行?如果它在模拟器上,模拟器是否设置为提供 Google API?

【讨论】:

  • 它在我的设备上运行(摩托罗拉 razer)
  • 已修复。问题是我在构建路径中包含了谷歌地图库并使用谷歌 api。
  • 这是什么意思@DanielGabay。请您详细说明一下。您为在您的​​应用程序中成功显示地图做了什么。我的设备而不是模拟器中出现了同样的错误。
【解决方案2】:

我通过在导入 Google Play 服务库时选中“将项目复制到工作区”解决了这个错误。 更多信息在这里:http://developer.android.com/google/play-services/setup.html

【讨论】:

  • 是的,我认为这个问题不再有效,因为它适用于 Google Maps Api V1。 V2 像你说的那样工作,但过去没有其他选择,这个错误困扰了人们一段时间。感知到的行为是 MapActivity 的类(仅限 v1 SDK)将失败一些初始化,然后无法完全作为一个类加载。那么这会导致你的应用随机崩溃,并出现一个非常神秘的堆栈错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-16
  • 1970-01-01
  • 2012-11-27
  • 2015-12-19
  • 2015-12-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多