Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Failing to launch activity due to ClassNotFoundException

I am trying to launch a new activity using the code:

Intent i = new Intent(this, TempLobbyActivity.class);
startActivity(i);
finish();

When I launch this code I get the following exceptions when executing the Intent constructor.

FATAL EXCEPTION: main
Process: com.edr.iveflownthat, PID: 1457
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/edr/iveflownthat/TempLobbyActivity;
    at com.edr.iveflownthat.pages.MainActivity.tryAutoLogin(MainActivity.java:46)
    at com.edr.iveflownthat.pages.MainActivity.onCreate(MainActivity.java:22)
    at android.app.Activity.performCreate(Activity.java:5933)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
    at android.app.ActivityThread.access$800(ActivityThread.java:144)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:135)
    at android.app.ActivityThread.main(ActivityThread.java:5221)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Caused by: java.lang.ClassNotFoundException: Didn't find class     "com.edr.iveflownthat.TempLobbyActivity" on path: DexPathList[[zip file "/data/app/com.edr.iveflownthat-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
FATAL EXCEPTION: main
Process: com.edr.iveflownthat, PID: 1457
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/edr/iveflownthat/TempLobbyActivity;
    at com.edr.iveflownthat.pages.MainActivity.tryAutoLogin(MainActivity.java:46)
    at com.edr.iveflownthat.pages.MainActivity.onCreate(MainActivity.java:22)
    at android.app.Activity.performCreate(Activity.java:5933)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
    at android.app.ActivityThread.access$800(ActivityThread.java:144)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:135)
    at android.app.ActivityThread.main(ActivityThread.java:5221)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.edr.iveflownthat.TempLobbyActivity" on path: DexPathList[[zip file "/data/app/com.edr.iveflownthat-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
    ... 15 more
Suppressed: java.lang.NoClassDefFoundError: com.edr.iveflownthat.TempLobbyActivity
    at dalvik.system.DexFile.defineClassNative(Native Method)
    at dalvik.system.DexFile.defineClass(DexFile.java:222)
    at dalvik.system.DexFile.loadClassBinaryName(DexFile.java:215)
    at dalvik.system.DexPathList.findClass(DexPathList.java:321)
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:54)
    ... 17 more
Suppressed: java.lang.ClassNotFoundException: com.edr.iveflownthat.TempLobbyActivity
    at java.lang.Class.classForName(Native Method)
    at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
    at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
    ... 16 more
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available  at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
    ... 15 more
Suppressed: java.lang.NoClassDefFoundError: com.edr.iveflownthat.TempLobbyActivity
    at dalvik.system.DexFile.defineClassNative(Native Method)
    at dalvik.system.DexFile.defineClass(DexFile.java:222)
    at dalvik.system.DexFile.loadClassBinaryName(DexFile.java:215)
    at dalvik.system.DexPathList.findClass(DexPathList.java:321)
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:54)
    ... 17 more
Suppressed: java.lang.ClassNotFoundException: com.edr.iveflownthat.TempLobbyActivity
    at java.lang.Class.classForName(Native Method)
    at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
    at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
    ... 16 more
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available

I have made sure that the class TempLobbyActivity does exist and is a proper activity. I get no other errors.

Here is the begining of TempLobbyActivity:

package com.edr.iveflownthat;

import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import com.edr.iveflownthat.pages.fragments.LobbyLeaderboardFragment;
import com.edr.iveflownthat.pages.fragments.LobbyMessagerFragment;
import com.edr.iveflownthat.pages.fragments.LobbyMyPlanesFragment;

public class TempLobbyActivity extends FragmentActivity {

And here is my manifest file:

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

    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="19" />

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.USE_CREDENTIALS" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/app_logo"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />

        <activity
            android:name=".pages.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>
        <activity
            android:name=".StartActivity"
            android:label="@string/title_activity_start" >
        </activity>
        <activity
            android:name=".pages.AccountLoginActivity"
        android:label="@string/title_activity_login" >
        </activity>
        <activity
            android:name=".pages.MyPlanesActivity"
            android:label="@string/title_activity_my_planes" >
        </activity>
        <activity
            android:name="com.edr.icom.edr.iveflownthat.activities.AccountNewActivity"
            android:label="@string/title_activity_new_account" >
        </activity>
        <activity
            android:name=".pages.SearchPlanesActivity"
            android:label="@string/title_activity_search"
            android:parentActivityName=".pages.LobbyActivity" >
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="com.edr.iveflownthat.pages.LobbyActivity" />
        </activity>
        <activity
            android:name=".pages.LeaderBoardActivity"
            android:label="@string/title_activity_leader_board" >
        </activity>
        <activity
            android:name=".pages.PlaneBioActivity"
            android:label="@string/title_activity_plane_info" >
        </activity>
        <activity
            android:name=".pages.AccountLoginFacebookActivity"
            android:label="@string/title_activity_account_login_facebook" >
        </activity>
        <activity
            android:name=".pages.AccountLoginGoogleActivity"
            android:label="@string/title_activity_account_login_google" >
        </activity>
        <activity
            android:name=".pages.AccountLoginTwitterActivity"
            android:label="@string/title_activity_account_login_twitter" >
        </activity>
        <activity
            android:name=".pages.SettingsActivity"
            android:label="@string/title_activity_settings" >
        </activity>
        <activity
            android:name=".pages.MainTabActivity"
            android:label="@string/title_activity_main_tab" >
        </activity>
        <activity
            android:name=".pages.LobbyActivity"
            android:label="@string/title_activity_lobby" >
        </activity>
        <activity
            android:name=".pages.MessageStreamActivity"
            android:label="@string/title_activity_message_stream"
            android:parentActivityName=".pages.LobbyActivity" >
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="com.edr.iveflownthat.pages.LobbyActivity" />
        </activity>
        <activity
            android:name=".pages.LeaderboardActivity"
            android:label="@string/title_activity_leaderboard"
            android:parentActivityName=".pages.LobbyActivity" >
        <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="com.edr.iveflownthat.pages.LobbyActivity" />
        </activity>

        <service
            android:name=".services.MainService"
            android:exported="false" />

        <activity
            android:name=".pages.NewMessageActivity"
            android:label="@string/title_activity_new_message" >
        </activity>
        <activity
            android:name=".pages.PlaneActivity"
            android:label="@string/title_activity_plane" >
        </activity>
        <!--
        <meta-data
            android:name="com.facebook.sdk.ApplicationId"
            android:value="@string/app_id" />

        <activity
            android:name="com.facebook.LoginActivity"
            android:label="@string/app_name" >
        </activity>
        -->
        <activity
            android:name=".TempLobbyActivity"
            android:label="@string/title_activity_temp_lobby" >
        </activity>
    </application>

</manifest>
like image 373
Eric Siegal Avatar asked Nov 02 '14 17:11

Eric Siegal


People also ask

What is the reason for ClassNotFoundException?

ClassNotFoundException is a checked exception which occurs when an application tries to load a class through its fully-qualified name and can not find its definition on the classpath. This occurs mainly when trying to load classes using Class.

Is ClassNotFoundException a runtime exception?

ClassNotFoundException is a runtime exception that is thrown when an application tries to load a class at runtime using the Class. forName() or loadClass() or findSystemClass() methods ,and the class with specified name are not found in the classpath.

Is ClassNotFoundException checked?

ClassNotFoundException is a checked exception, so it has to be catch or thrown to the caller. ClassNotFoundException always occurs at runtime because we are indirectly loading the class using Classloader. Java compiler has no way to know if the class will be present in the classpath at runtime or not.


1 Answers

I was getting the same error even though class was defined in AndroidManifest.xml.

Cause : Sometimes this happens as you add more than one version of appcompat library.

Solution : Remove any previous version of appcompat lib and add appcompat_v7.jar to your /lib folder.

Clean your project and build again. You might not get error again.

like image 74
kinjal patel Avatar answered Sep 25 '22 12:09

kinjal patel