Android Activity: ClassNotFoundException

my android app works fine until I added some classes and edited the manifest file.

Now when I try to run or debug an app on my Android emulator using Android 2.2, the app crashes and I get a ClassNotFoundException like this:

D/AndroidRuntime(  275): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
D/AndroidRuntime(  275): CheckJNI is ON
D/AndroidRuntime(  275): --- registering native functions ---
I/ActivityManager(   59): Starting activity: Intent { act=android.intent.action.MAIN     cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=de.bastian.gpstracker/.MainActivity }
I/ActivityManager(   59): Start proc de.bastian.gpstracker for activity de.bastian.gpstracker/.MainActivity: pid=281 uid=10036 gids={}
D/AndroidRuntime(  275): Shutting down VM
D/jdwp    (  275): adbd disconnected
D/AndroidRuntime(  281): Shutting down VM
W/dalvikvm(  281): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
E/AndroidRuntime(  281): FATAL EXCEPTION: main
E/AndroidRuntime(  281): java.lang.RuntimeException: Unable to instantiate application de.bastian.gpstracker: java.lang.ClassNotFoundException: de.bastian.gpstracker in loader dalvik.system.PathClassLoader[/data/app/de.bastian.gpstracker-1.apk]
E/AndroidRuntime(  281):        at android.app.ActivityThread$PackageInfo.makeApplication(ActivityThread.java:649)
E/AndroidRuntime(  281):        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4232)
E/AndroidRuntime(  281):        at android.app.ActivityThread.access$3000(ActivityThread.java:125)
E/AndroidRuntime(  281):        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2071)
E/AndroidRuntime(  281):        at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(  281):        at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime(  281):        at android.app.ActivityThread.main(ActivityThread.java:4627)
E/AndroidRuntime(  281):        at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(  281):        at java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime(  281):        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
E/AndroidRuntime(  281):        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
E/AndroidRuntime(  281):        at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(  281): Caused by: java.lang.ClassNotFoundException: de.bastian.gpstracker in loader dalvik.system.PathClassLoader[/data/app/de.bastian.gpstracker-1.apk]
E/AndroidRuntime(  281):        at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)
E/AndroidRuntime(  281):        at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
E/AndroidRuntime(  281):        at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
E/AndroidRuntime(  281):        at android.app.Instrumentation.newApplication(Instrumentation.java:942)
E/AndroidRuntime(  281):        at android.app.ActivityThread$PackageInfo.makeApplication(ActivityThread.java:644)
E/AndroidRuntime(  281):        ... 11 more
W/ActivityManager(   59):   Force finishing activity de.bastian.gpstracker/.MainActivity
D/dalvikvm(  149): GC_FOR_MALLOC freed 4092 objects / 248904 bytes in 134ms
W/ActivityManager(   59): Activity pause timeout for HistoryRecord{43fa91d0 de.bastian.gpstracker/.MainActivity}
I/ActivityManager(   59): Displayed activity com.android.launcher/com.android.launcher2.Launcher: 12561 ms (total 12561 ms)
W/ActivityManager(   59): Activity destroy timeout for HistoryRecord{43fa91d0 de.bastian.gpstracker/.MainActivity}
D/KeyguardViewMediator(   59): pokeWakelock(5000)
D/KeyguardViewMediator(   59): pokeWakelock(5000)
I/ARMAssembler(   59): generated scanline__00000177:03515104_00001001_00000000 [ 91 ipp] (114 ins) at [0x325a10:0x325bd8] in 590637 ns
I/ARMAssembler(   59): generated scanline__00000077:03515104_00000000_00000000 [ 33 ipp] (47 ins) at [0x3261f0:0x3262ac] in 261841 ns
W/WindowManager(   59): No window to dispatch pointer action 1
I/Process (  281): Sending signal. PID: 281 SIG: 9
I/ActivityManager(   59): Process de.bastian.gpstracker (pid 281) has died.

      

I think there is something wrong with my project config. Here is my manifest file:

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

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="10" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme"
        android:name="de.bastian.gpstracker" >
        <activity
            android:name="de.bastian.gpstracker.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

      

To be honest, I don't remember the last changes I made to this file, but everything seems fine to me.

When looking for the sultan I also came from the link Android Activity ClassNotFoundException - tried everything that describes the same problem but has a solution not applicable to mine because I only work with one project.

In the above error log, I noticed that the name of the apk file created ends with '-1'. Maybe it's a bug, maybe just how eclipse / adt handles things. Also, I noticed that when I try to start / debug a project, multiple class files are created with the names MainActivity.class, MainActivity $ 1.class, MainActivity $ 2.class, although I only have one MainActivity.java file (and no MainActivity $ 2.file or something like that.)

It would be great if someone had an idea of ​​what is going wrong here.

+3


source to share


2 answers


You are installing a node app to reference a non-existent class

de.bastian.gpstracker

      

Refers to the package name, no class. Since this gpstracker

is the last thing on this line, the classloader assumes that it gpstracker

is a class, tries to load it and fails.

So, write the class name Application (which extends Application

).



For example,

<application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme"
        android:name="de.bastian.gpstracker.MyApplicationClass" >

      

If you don't have a class that extends Application

, pull out the attribute android:name

for that node so it looks like this:

<application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >

      

+2


source


Change the app tag in your manifest to this:

<application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="de.bastian.gpstracker.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

      



Remove name attribute from application tag. This, misleadingly, has nothing to do with the name of your application and is in fact the name of an additional class to load before your application is loaded. This is why you are getting ClassNotFoundException. Remove it and it should work:

0


source







All Articles