2012-08-10 56 views
3

我試圖做一個谷歌地圖活動,但我得到一個LogCat錯誤,我的應用程序崩潰。當我註冊我的API密鑰時,我使用了android提供的編碼,所以我不知道爲什麼它不起作用。我需要幫助解決這個問題。com.google.android.maps.MapView ClassNotFoundException

logcat的

08-10 11:04:38.854: W/dalvikvm(702): Unable to resolve superclass of Lcom/maps/google/Main; (402) 
08-10 11:04:38.854: W/dalvikvm(702): Link of class 'Lcom/maps/google/Main;' failed 
08-10 11:04:38.854: D/AndroidRuntime(702): Shutting down VM 
08-10 11:04:38.854: W/dalvikvm(702): threadid=1: thread exiting with uncaught exception (group=0x40a13300) 
08-10 11:04:38.874: E/AndroidRuntime(702): FATAL EXCEPTION: main 
08-10 11:04:38.874: E/AndroidRuntime(702): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.maps.google/com.maps.google.Main}: java.lang.ClassNotFoundException: com.maps.google.Main 
08-10 11:04:38.874: E/AndroidRuntime(702): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1983) 
08-10 11:04:38.874: E/AndroidRuntime(702): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 
08-10 11:04:38.874: E/AndroidRuntime(702): at android.app.ActivityThread.access$600(ActivityThread.java:130) 
08-10 11:04:38.874: E/AndroidRuntime(702): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 
08-10 11:04:38.874: E/AndroidRuntime(702): at android.os.Handler.dispatchMessage(Handler.java:99) 
08-10 11:04:38.874: E/AndroidRuntime(702): at android.os.Looper.loop(Looper.java:137) 
08-10 11:04:38.874: E/AndroidRuntime(702): at android.app.ActivityThread.main(ActivityThread.java:4745) 
08-10 11:04:38.874: E/AndroidRuntime(702): at java.lang.reflect.Method.invokeNative(Native Method) 
08-10 11:04:38.874: E/AndroidRuntime(702): at java.lang.reflect.Method.invoke(Method.java:511) 
08-10 11:04:38.874: E/AndroidRuntime(702): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
08-10 11:04:38.874: E/AndroidRuntime(702): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
08-10 11:04:38.874: E/AndroidRuntime(702): at dalvik.system.NativeStart.main(Native Method) 
08-10 11:04:38.874: E/AndroidRuntime(702): Caused by: java.lang.ClassNotFoundException: com.maps.google.Main 
08-10 11:04:38.874: E/AndroidRuntime(702): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61) 
08-10 11:04:38.874: E/AndroidRuntime(702): at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 
08-10 11:04:38.874: E/AndroidRuntime(702): at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 
08-10 11:04:38.874: E/AndroidRuntime(702): at android.app.Instrumentation.newActivity(Instrumentation.java:1053) 
08-10 11:04:38.874: E/AndroidRuntime(702): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1974) 
08-10 11:04:38.874: E/AndroidRuntime(702): ... 11 more 

XML文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <com.google.android.maps.MapView 
     android:id="@+id/MView" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:apiKey="02ooeHTBsCB6ez4yyEGFEyiuNCz5hTHubgxBMfg" /> 

</RelativeLayout> 

的Java文件

package com.maps.google; 

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

public class Main extends MapActivity { 

    MapView map; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     map = (MapView)findViewById(R.id.MView); 
    } 

    @Override 
    protected boolean isRouteDisplayed() { 
     // TODO Auto-generated method stub 
     return false; 
    } 

} 
+0

您是否在清單文件中添加了'? – 2012-08-10 15:38:21

+0

是你使用模擬器,使用谷歌API的? – blessenm 2012-08-10 15:39:07

+1

@ M Mohsin Naeem:謝謝,這個效果很好 – 2012-08-10 15:41:06

回答

11

添加<uses-library像這樣在你的manifest文件。

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.package.name"> 
    ... 
    <application android:name="MyApplication" > 
    <uses-library android:name="com.google.android.maps" /> 
    ... 
    </application> 
    ... 
</manifest> 
+0

請注意,有時在Eclipse中添加「uses」行並沒有成功,在退出Eclipse之後嘗試使用外部編輯器。 – 2012-09-14 17:13:07

+0

+1,節省了很多時間。 – AAnkit 2013-06-03 13:52:45

5

請確保您已包含在您的應用程序清單如下一行:

<uses-library android:required="true" android:name="com.google.android.maps" /> 

,並確保它在正確的位置。我的問題(有類似的錯誤消息)是我把它放在那裏,但像使用權限的東西,它只是在根元素清單下,實際上,uses-library元素假定放置在應用程序元素下。如果我不清楚,請參閱:從Sameers鏈接配置應用程序清單。

相關問題