3

I'd like to make a MapView, but extending the MapActivity throws a classNotFoundException:

   /AndroidRuntime(  374):        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585)
    E/AndroidRuntime(  374):        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
    E/AndroidRuntime(  374):        at android.app.ActivityThread.access$2300(ActivityThread.java:125)
    E/AndroidRuntime(  374):        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
    E/AndroidRuntime(  374):        at android.os.Handler.dispatchMessage(Handler.java:99)
    E/AndroidRuntime(  374):        at android.os.Looper.loop(Looper.java:123)
    E/AndroidRuntime(  374):        at android.app.ActivityThread.main(ActivityThread.java:4627)
    E/AndroidRuntime(  374):        at java.lang.reflect.Method.invokeNative(Native Method)
    E/AndroidRuntime(  374):        at java.lang.reflect.Method.invoke(Method.java:521)
    E/AndroidRuntime(  374):        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
    E/AndroidRuntime(  374):        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
    E/AndroidRuntime(  374):        at dalvik.system.NativeStart.main(Native Method)
    E/AndroidRuntime(  374): Caused by: java.lang.ClassNotFoundException: com.androidcourse.phonemapper.view.MapShowActivity in loader dalvik.system.PathClassLoader[/system/framework/com.google.android.maps.jar:/data/app/com.androidcourse.phonemapper-2.apk]
    E/AndroidRuntime(  374):        at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)
    E/AndroidRuntime(  374):        at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
    E/AndroidRuntime(  374):        at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
    E/AndroidRuntime(  374):        at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
    E/AndroidRuntime(  374):        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577)

I have a Google Maps API key, I had set the project to be for Google APIs, I am using an Android Google API AVD(emulator) and I did include the tag in my AndroidManifest.xml.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.androidcourse.phonemapper" android:versionCode="1"
    android:versionName="1.0">

    <uses-sdk android:minSdkVersion="8" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
    <application android:icon="@drawable/icon" android:label="@string/app_name">

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

.................

        <activity android:name=".view.WelcomeActivity" android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mainlayout"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <com.google.android.maps.MapView
        android:id="@+id/mapview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:clickable="true"
        android:apiKey="api_key_is_here_just_wont_show_it_to_everybody"
    />
</RelativeLayout>
Kara
  • 6,115
  • 16
  • 50
  • 57
George
  • 3,727
  • 9
  • 31
  • 47
  • 2
    I have gotten similar reports from users and seen stacks from their systems as well. I believe there is a race condition somewhere when loading up the shared lib but it's hard to tell if the sharedlib is doing something stupid at class init or what. Yeah it's random the same AVD I am betting you created with the same specs and shared lib and it worked ... Did you ever track it down? – Greg Giacovelli Jan 13 '11 at 19:02

4 Answers4

5

I had the exact same error for me I had to implement the android:required="true" statement, which has been left of a lot of tutorials.

<uses-library
            android:name="com.google.android.maps"
            android:required="true" />
aidenfry
  • 51
  • 1
  • 1
2

Also, if you forget to put the

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

tag inside your tag in your manifest you will get a ClassNotFound Exception for your activity that extends MapActivity :)

Dori
  • 18,283
  • 17
  • 74
  • 116
1

you should uses-library tag inside application tag

<application>
<uses-library android:name="com.google.android.maps" android:required="true"/>
</application>
Pratik Butani
  • 60,504
  • 58
  • 273
  • 437
1

Try setting package to "com.androidcourse.phonemapper.view":

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.androidcourse.phonemapper.view" android:versionCode="1"
android:versionName="1.0">

and then referencing it:

<activity android:name=".WelcomeActivity"
Peter Knego
  • 79,991
  • 11
  • 123
  • 154
  • Err... actually there is a pending refactoring, and the activities will be in the main package and not in .view. I tried it nevertheless, but still got the same error, this time with a "view." prefix. – George Dec 26 '10 at 09:53
  • However, after recreating the AVD using the same settings, things got working. Hm ... – George Dec 26 '10 at 14:04