0

I'm trying to run a sample code provided by AndEngine (the simplest sample code as seen below, received from here). I added Andengine.jar file library received from here.

Everything is fine, but unfortunately when I want to run the sample, it throws FATAL EXCEPTION: main Unable to instantiate activity error. I registered the activitiy on the AndroidManifest.xml file, but still I get the error. Any hints how to resolve it?

06-02 15:44:48.699: E/AndroidRuntime(19437): FATAL EXCEPTION: main
06-02 15:44:48.699: E/AndroidRuntime(19437): Process: com.example.t, PID: 19437
06-02 15:44:48.699: E/AndroidRuntime(19437): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.t/com.example.t.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "com.example.t.MainActivity" on path: DexPathList[[zip file "/data/app/com.example.t-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
06-02 15:44:48.699: E/AndroidRuntime(19437):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2236)
06-02 15:44:48.699: E/AndroidRuntime(19437):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
06-02 15:44:48.699: E/AndroidRuntime(19437):    at android.app.ActivityThread.access$800(ActivityThread.java:151)
06-02 15:44:48.699: E/AndroidRuntime(19437):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
06-02 15:44:48.699: E/AndroidRuntime(19437):    at android.os.Handler.dispatchMessage(Handler.java:102)
06-02 15:44:48.699: E/AndroidRuntime(19437):    at android.os.Looper.loop(Looper.java:135)
06-02 15:44:48.699: E/AndroidRuntime(19437):    at android.app.ActivityThread.main(ActivityThread.java:5254)
06-02 15:44:48.699: E/AndroidRuntime(19437):    at java.lang.reflect.Method.invoke(Native Method)
06-02 15:44:48.699: E/AndroidRuntime(19437):    at java.lang.reflect.Method.invoke(Method.java:372)
06-02 15:44:48.699: E/AndroidRuntime(19437):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
06-02 15:44:48.699: E/AndroidRuntime(19437):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
06-02 15:44:48.699: E/AndroidRuntime(19437): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.t.MainActivity" on path: DexPathList[[zip file "/data/app/com.example.t-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
06-02 15:44:48.699: E/AndroidRuntime(19437):    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
06-02 15:44:48.699: E/AndroidRuntime(19437):    at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
06-02 15:44:48.699: E/AndroidRuntime(19437):    at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
06-02 15:44:48.699: E/AndroidRuntime(19437):    at android.app.Instrumentation.newActivity(Instrumentation.java:1066)
06-02 15:44:48.699: E/AndroidRuntime(19437):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2226)
06-02 15:44:48.699: E/AndroidRuntime(19437):    ... 10 more
06-02 15:44:48.699: E/AndroidRuntime(19437):    Suppressed: java.lang.NoClassDefFoundError: com.example.t.MainActivity
06-02 15:44:48.699: E/AndroidRuntime(19437):        at dalvik.system.DexFile.defineClassNative(Native Method)
06-02 15:44:48.699: E/AndroidRuntime(19437):        at dalvik.system.DexFile.defineClass(DexFile.java:226)
06-02 15:44:48.699: E/AndroidRuntime(19437):        at dalvik.system.DexFile.loadClassBinaryName(DexFile.java:219)
06-02 15:44:48.699: E/AndroidRuntime(19437):        at dalvik.system.DexPathList.findClass(DexPathList.java:321)
06-02 15:44:48.699: E/AndroidRuntime(19437):        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:54)
06-02 15:44:48.699: E/AndroidRuntime(19437):        ... 14 more
06-02 15:44:48.699: E/AndroidRuntime(19437):    Suppressed: java.lang.ClassNotFoundException: com.example.t.MainActivity
06-02 15:44:48.699: E/AndroidRuntime(19437):        at java.lang.Class.classForName(Native Method)
06-02 15:44:48.699: E/AndroidRuntime(19437):        at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
06-02 15:44:48.699: E/AndroidRuntime(19437):        at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
06-02 15:44:48.699: E/AndroidRuntime(19437):        at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
06-02 15:44:48.699: E/AndroidRuntime(19437):        ... 13 more
06-02 15:44:48.699: E/AndroidRuntime(19437):    Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available

Source code:

package com.example.t;

import org.anddev.andengine.ui.activity.BaseGameActivity;

import android.view.Menu;
import android.view.MenuItem;

/**
 * (c) 2010 Nicolas Gramlich 
 * (c) 2011 Zynga Inc.
 * 
 * @author Nicolas Gramlich
 * @since 22:10:28 - 11.04.2010
 */
public abstract class MainActivity extends BaseGameActivity {
    // ===========================================================
    // Constants
    // ===========================================================

    private static final int MENU_TRACE = Menu.FIRST;

    // ===========================================================
    // Fields
    // ===========================================================

    // ===========================================================
    // Constructors
    // ===========================================================

    // ===========================================================
    // Getter & Setter
    // ===========================================================

    // ===========================================================
    // Methods for/from SuperClass/Interfaces
    // ===========================================================

    @Override
    public boolean onCreateOptionsMenu(final Menu pMenu) {
        pMenu.add(Menu.NONE, MENU_TRACE, Menu.NONE, "Start Method Tracing");
        return super.onCreateOptionsMenu(pMenu);
    }

    @Override
    public boolean onPrepareOptionsMenu(final Menu pMenu) {
        pMenu.findItem(MENU_TRACE).setTitle(this.mEngine.isMethodTracing() ? "Stop Method Tracing" : "Start Method Tracing");
        return super.onPrepareOptionsMenu(pMenu);
    }

    @Override
    public boolean onMenuItemSelected(final int pFeatureId, final MenuItem pItem) {
        switch(pItem.getItemId()) {
            case MENU_TRACE:
                if(this.mEngine.isMethodTracing()) {
                    this.mEngine.stopMethodTracing();
                } else {
                    this.mEngine.startMethodTracing("AndEngine_" + System.currentTimeMillis() + ".trace");
                }
                return true;
            default:
                return super.onMenuItemSelected(pFeatureId, pItem);
        }
    }

    // ===========================================================
    // Methods
    // ===========================================================

    // ===========================================================
    // Inner and Anonymous Classes
    // ===========================================================
}

and Manifest file:

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

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="20" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".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>
Tina J
  • 4,983
  • 13
  • 59
  • 125

2 Answers2

2

Your activity can't be an abstract class. Try

public class MainActivity extends BaseGameActivity {
    ...
}
Omar Mainegra
  • 4,006
  • 22
  • 30
1

I had the same issue, since you added a new library Andengine.jar try this:

in your project go to Properties -> Java Build Path -> Order and Export, uncheck the option Android Dependencies, do a clean & Build project.

this is described in: Android ClassNotFoundException: Didn't find class on path

Community
  • 1
  • 1
Jorgesys
  • 124,308
  • 23
  • 334
  • 268