java.lang.ClassNotFoundException: Didn't find class on path: dexpathlist

JavaAndroidC++Android Ndk

Java Problem Overview


I'm currently working on a project in which I have to use purely native ndk. It worked when I try running an helloworld example from Irrlicht engine source. Then I try using it in my project following the same format of that example. But I got:

03-14 01:40:05.308: E/AndroidRuntime(799): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.irrlicht.example1/android.app.POMActivity}: java.lang.ClassNotFoundException: Didn't find class "android.app.POMActivity" on path: DexPathList[[zip file "/data/app/com.irrlicht.example1-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.irrlicht.example1-2, /system/lib]]

while running my project.

Here is my main.cpp file:

#include <android/log.h>
#include <jni.h>
#include <android_native_app_glue.h>
#include "android_tools.h"
#ifdef _IRR_ANDROID_PLATFORM_
void android_main(android_app* app)
{
__android_log_print(4 , "pom" , "nothing");
}

#endif

in Android.mk:

LOCAL_PATH := $(call my-dir)/..
IRRLICHT_PROJECT_PATH := $(LOCAL_PATH)
include $(CLEAR_VARS)
LOCAL_MODULE := Irrlicht
LOCAL_SRC_FILES := /home/karthik/Android/Essentials/ogl-es/lib/Android/libIrrlicht.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := HelloWorldMobile1
LOCAL_CFLAGS := -D_IRR_ANDROID_PLATFORM_ -pipe -fno-exceptions -fno-rtti -fstrict-aliasing
LOCAL_C_INCLUDES := -I ../../include -I /home/karthik/Android/Essentials/ogl-es/include -I /home/karthik/Android/json/jsoncpp-src-0.5.0/libs/linux-gcc-4.8 -I /home/karthik/Android/json/jsoncpp-src-0.5.0/include/json 
LOCAL_SRC_FILES :=  android_tools.cpp main.cpp
LOCAL_LDLIBS := -lEGL -llog -lGLESv1_CM -lGLESv2 -lz -landroid -ldl 
LOCAL_STATIC_LIBRARIES := Irrlicht android_native_app_glue
include $(BUILD_SHARED_LIBRARY)
$(call import-module,android/native_app_glue)

And I have given Activity name in AndroidManifest.xml:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
	package="com.irrlicht.example1"
	android:versionCode="1"
	android:versionName="1.0">
...
<application android:icon="@drawable/irr_icon" android:label="HelloWorldMobile1" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" android:debuggable="true">
        <activity android:name="android.app.POMActivity"
		android:label="HelloWorldMobile1"
		android:launchMode="singleTask"
		android:configChanges="orientation|keyboardHidden"
		android:screenOrientation="portrait"
		android:clearTaskOnLaunch="true">
		<meta-data android:name="android.app.lib_name" android:value="HelloWorldMobile1" />						

What is the mistake I am doing here? I'll post full code if necassary.

Java Solutions


Solution 1 - Java

I tried all possible options but result is zero. Finally i found correct solution which is helpful for me. Just go to disable Instant Run Go to File -> Settings -> Build,Execution, Deployment -> Instant Run -> Uncheck the checkbox for instant run. Run your app once and this apk file work properly..

Solution 2 - Java

I had a similar problem, here's my solution:

  1. Right click on your project and select Properties.
  2. Select Java Build Path from the menu on the left.
  3. Select the Order and Export tab.
  4. From the list make sure the libraries or external jars you added to your project are checked.
  5. Finally, clean your project & run.

You may also check this answer.

Solution 3 - Java

This seems to be problem in your case. The relative path of your activity in manifest is not correct:

<activity android:name="android.app.POMActivity"

replace this with :

<activity android:name=".POMActivity"

or

<activity android:name="com.irrlicht.example1.POMActivity"

Solution 4 - Java

The deletion of app on device and cleaning of project works for me

Solution 5 - Java

Just try Clean Project & Rebuild Project.

Solution 6 - Java

I should understand the problem by just seeing

> dex errors

But it took a half day to fix the issue.
I fix this by following android developers page's instruction: https://developer.android.com/studio/build/multidex.html

First add this to build.gradle file :

defaultConfig {
    ...
    minSdkVersion 14
    targetSdkVersion 21
    ...

    // Enabling multidex support.
    multiDexEnabled true
}

 dependencies {
     compile 'com.android.support:multidex:1.0.0'
 }

Then extend Application class with the MultiDexApplication class as instructed on the above link (or declare the application class in AndroidManifest.xml or override attachBaseContext() function if not possible to extend the application class).

That's all and it solved the problem.

Solution 7 - Java

This exception can also occur when you have a custom view in your layout like this:

<com.example.MyView
	android:layout_width="match_parent"
	android:layout_height="match_parent" />

and you change the view's package name from "com.example" to something different, but you forget to change it in the layout as well.

Solution 8 - Java

If the project was compiling just before, you can try to clear the cache using :

./gradlew clean

or

./gradlew cleanBuildCache

or for windows

gradlew cleanBuildCache

https://developer.android.com/studio/build/build-cache.html

Solution 9 - Java

i solved it by using: ./gradlew --stop command in android studio terminal. After perform this command then clean and rebuild project.

Solution 10 - Java

  1. delete the bin folder
  2. change the order of librarys
  3. clean and rebuild

worked for me.

Solution 11 - Java

for anyone who comes across this problem now, with android studio 4.0+ you just have to enable java 8 as mentioned here

android {
    defaultConfig {
            ...
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

Solution 12 - Java

For any one who is having multidex enable write this

inside build.gradle

apply plugin: 'com.android.application'

android {
 defaultConfig {
      multiDexEnabled true
  }
 dexOptions {
        javaMaxHeapSize "4g"
    }
}

dependencies {
    compile 'com.android.support:appcompat-v7:+'
    compile 'com.google.android.gms:play-services:+'
    compile 'com.android.support:multidex:1.0.1'
}

write a class EnableMultiDex like below

import android.content.Context;
import android.support.multidex.MultiDexApplication;

public class EnableMultiDex extends MultiDexApplication {
    private static EnableMultiDex enableMultiDex;
    public static Context context;

    public EnableMultiDex(){
        enableMultiDex=this;
    }

    public static EnableMultiDex getEnableMultiDexApp() {
        return enableMultiDex;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        context = getApplicationContext();

    }
}

and in AndroidManifest.xml write this className inside Application tag

 <application
    android:name="YourPakageName.EnableMultiDex"
    android:hardwareAccelerated="true"
    android:icon="@drawable/wowio_launch_logo"
    android:label="@string/app_name"
    android:largeHeap="true"
    tools:node="replace">

Solution 13 - Java

We don't need to have customized Application class which extends MultiDexApplication. Instead, we can have like this on AndroidManifest.xml

<application
android:name="android.support.multidex.MultiDexApplication"
android:hardwareAccelerated="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">

And along with this on build.gradle(Module:app),

defaultConfig {
      ...

      // Enabling multidex support.
      multiDexEnabled true
}

dependencies {
     ... 
     compile 'com.android.support:multidex:1.0.2'
}

Thanks.

Solution 14 - Java

I faced this Issue multiple times and they're all solved by disabling Instant Run.

Solution 15 - Java

When you are using multidex , then try to extend your application class with MultiDexAppication instead of Application and override below method this required for Android below 5.0 (because 5.0 and above support to the multidex)

@Override
protected void attachBaseContext(Context base)
{
    super.attachBaseContext(base);
    MultiDex.install(BaseApplication.this);
}

and in dependencies add this

compile 'com.android.support:multidex:1.0.1'

Solution 16 - Java

In my case this issue arose because of Kotlin. In my existing code there was a class that was written Kotlin. I built the app, it installed and as soon as first activity opened app crashed. in the logcat this error was being shown. I then updated my Kotlin version from Kotlin website in app gradle file. Build the app again and it worked fine then.

Solution 17 - Java

Just Change your folder name from lib to libs ,

Then you will see some error marks in your project, to resolve this rightClick on project >

Properties > Java Build Path > libraries :

Remove all the library with red marks on it, then apply > ok > after that clean your project . TADA see the magic :)

Solution 18 - Java

One possible reason would be the incorrect path of the activity in the Apps AndroidManifest.xml file. Register the activity with in your AndroidManifest.xml with full relative path like below.

<activity android:name="<full_path>.ActivityName" />

Solution 19 - Java

after i tried the given answers, i found out another reason for the same Exception, that i had to add the library i'm using manually to my main library through

Right click on my main library > 
Properties > 
Android > 
Go to the very bottom of the screen and click (Add) > 
Select my other library that caused the crash >
Apply

before this solution, i used the "Fix Project setup" from within the .java file in eclipse, but this did not work, so i had to add it manually here and it worked

Solution 20 - Java

I was getting this crash only on Samsung Lollipop devices and this [solution][1] worked for me.

dexOptions {
     preDexLibraries false
}

I'm posting this answer here because this question is currently the highest ranked search result on Google for this crash and none of the above answers worked for me. [1]: https://stackoverflow.com/a/46816876

Solution 21 - Java

Open "AndroidManifest" file and check for errors
or
check whether you have declared that activity name (which we forget when we copy+paste class of activity).

in my case i had replaced all occurrences "com" with "ctrl"+"shift"+"R" command, which also changed the names of activities (which started with com) in manifest.

Solution 22 - Java

The following solution worked for me...

I tried everything mentioned above but still didn't get my app running. I have react-native app running on latest version of gradle 4+ and android studio.

I had the issue where if i run react-native run-android it was failing with issue saying its not able to find MainApplication class...i.e ClassNotFoundException

I was able to resolve the issue when I updated my gradle.properties to use the compiler D8.

I added:

android.enableD8=true

to my gradle.properties

Doc Details here: https://android-developers.googleblog.com/2017/08/next-generation-dex-compiler-now-in.html

Solution 23 - Java

This was similar to my problem--after adding a Kotlin file to an all Java app, my app kept crashing when I would access a view that used a Kotlin file. I shut down Android Studio and restarted it, and it prompted me with a message saying "Kotlin not configured, would you like to configure?", which then solved my problem.

What this ultimately did is add the following classpath line inside my project build.gradle file:

buildscript {
   ...
   dependencies {
      ...
      classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
      ...
   }
   ...
}

Solution 24 - Java

I am going with @hofs but displaying where should put minifyEnabled.

In Module Gradle, Add minifyEnabled false in Debug block will work for me.

 android {
    compileSdkVersion 28
    buildToolsVersion "29.0.2"
    defaultConfig {
        applicationId "com.korechi.roamioapp"
        minSdkVersion 23
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
        debug {
          minifyEnabled false
        }
    }

}

Solution 25 - Java

As per my understading i get the issue after update android studio 2.1 to 2.3 due to the instant feature my application will not run when i copy the apk from output and put into the sdcard. For this problem i build the apk from build option do build apk in android studio.

Solution 26 - Java

If you are enabled minifyEnabled and shrinkResources to true in your app gradle file. You need to add the following line in proguard-rules.pro file

> -keep class com.yourpackage_name.** { *; }

because minification is removed some important classes in our apk file.

Solution 27 - Java

i had this issue before and the comments here helped in the past but this time it did not. i checked my proguard configuration and i removed the following lines and then it worked so proguard can have something to do with this error:

 -optimizationpasses 5
        -overloadaggressively
        -repackageclasses ''
        -allowaccessmodification
        -dontskipnonpubliclibraryclassmembers

Solution 28 - Java

Ashik abbas answer (disable Instant Run) work for me, but i need Instant Run, finally i found solution which is helpful for me. just disable minifyEnabled. go to build.gradle(Module: app) in debug block and disable minifyEnabled:

debug {
            minifyEnabled false

        }

Solution 29 - Java

In my case, I used the old namespace library while my project was set up making use of androidx one.

The solution was to replace android.support.design.widget.BottomNavigationView component with the right one to escape from support library: com.google.android.material.bottomnavigation.BottomNavigationView.

Solution 30 - Java

in my case, I define the Activity in Manifest.xml and forgot to create any activity. So I created Activity and define it in manifest and my error solved!

Solution 31 - Java

If you receive this error after removing some gradle dependency, check your manifest and make sure that you removed all entries corresponding that dependency.

Solution 32 - Java

For me the issue appeared after i created a signed APK. To fix it, i generated a new, debug apk using Run / Build APK. After that, Run(cmd+r) works again without this error.

Solution 33 - Java

I was facing same issue. I tried everything possible for a day, but nothing worked. The dependency which was causing problem was using lower compile sdk, target sdk and min sdk. I created library module for the project, copied all the sources and matched the sdk versions with application sdk versions. And finally it worked like a charm.

Solution 34 - Java

I had the same error and some answers mislead me on a newbie issue. I had the wrong package in my custom view descriptor like below. I hope it helps somebody.

<com.my.app.wrong.package.MyActivity
    android:id="@+id/myActivity"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="16dp"
    android:layout_marginRight="16dp"
    android:paddingTop="16dp"
    android:paddingBottom="8dp"
    android:gravity="left" />

Solution 35 - Java

This solved my case:

In my case, I was getting the exception below (note that my application class was causing the exception, not my activity):

ClassNotFoundException: Didn't find class "com.example.MyApplication" on path: DexPathList

I was getting this exception only on devices equal or below API 19, the reason was that I was extending MultiDexApplication() class and overriding attachBaseContext at the same time! When I removed attachBaseContext everything got on track.

class MyApplication : MultiDexApplication() {

override fun onCreate() {
    super.onCreate()
    // ...
}

override fun attachBaseContext(base: Context?) {
    super.attachBaseContext(base)
    MultiDex.install(this)
}

So if you happen to have such case as I had (Which isn't likely), there is no need to extend MultiDexApplication() and override attachBaseContext at the same time, doing one of these actions is enough.

Solution 36 - Java

Flipper isn't working on 0.61.x, so commenting out/removing initializeFlipper(this) in your MainApplication.java should do the trick.

Chill Pill.

Solution 37 - Java

For me what i ended up doing is disabling minifyEnabled false and shrinkResources false

Solution 38 - Java


Converting Java code to Kotlin code may cause this problem so configure kotlin in your project may remove this problem

Solution 39 - Java

delete 'android/app/.settings' folder

or

delete 'android/.settings' folder

or

delete 'android/.build' folder

or

delete 'android/.idea' folder

and

yarn react-native run android

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionKarthik SivamView Question on Stackoverflow
Solution 1 - JavaAshik AbbasView Answer on Stackoverflow
Solution 2 - JavamnsalimView Answer on Stackoverflow
Solution 3 - JavaSushilView Answer on Stackoverflow
Solution 4 - JavaVladView Answer on Stackoverflow
Solution 5 - Javanicolas asinovichView Answer on Stackoverflow
Solution 6 - JavaAkash BisariyaView Answer on Stackoverflow
Solution 7 - JavapetrnohejlView Answer on Stackoverflow
Solution 8 - JavaRomualdView Answer on Stackoverflow
Solution 9 - JavaaligurView Answer on Stackoverflow
Solution 10 - JavacrazyjuneView Answer on Stackoverflow
Solution 11 - JavaAmrView Answer on Stackoverflow
Solution 12 - JavaManoharView Answer on Stackoverflow
Solution 13 - JavaAbdul GaffarView Answer on Stackoverflow
Solution 14 - JavaMohamed NagehView Answer on Stackoverflow
Solution 15 - Javakabore abdoul mohamineView Answer on Stackoverflow
Solution 16 - JavaHarry .NaeemView Answer on Stackoverflow
Solution 17 - JavahemantsbView Answer on Stackoverflow
Solution 18 - JavaAkkiView Answer on Stackoverflow
Solution 19 - JavaAhmed Adel IsmailView Answer on Stackoverflow
Solution 20 - JavablinkmacalahanView Answer on Stackoverflow
Solution 21 - Javasifr_dot_inView Answer on Stackoverflow
Solution 22 - Javankadu1View Answer on Stackoverflow
Solution 23 - JavaConcernedHobbitView Answer on Stackoverflow
Solution 24 - JavaArpit PatelView Answer on Stackoverflow
Solution 25 - Javauser2306383View Answer on Stackoverflow
Solution 26 - JavaNaveen Kumar MView Answer on Stackoverflow
Solution 27 - Javaj2emanueView Answer on Stackoverflow
Solution 28 - JavahofsView Answer on Stackoverflow
Solution 29 - JavaAndrii ArtamonovView Answer on Stackoverflow
Solution 30 - JavaSana EbadiView Answer on Stackoverflow
Solution 31 - Javadees91View Answer on Stackoverflow
Solution 32 - JavapassatgtView Answer on Stackoverflow
Solution 33 - JavaPK GuptaView Answer on Stackoverflow
Solution 34 - JavalauksasView Answer on Stackoverflow
Solution 35 - JavaMostafa Arian NejadView Answer on Stackoverflow
Solution 36 - JavaAli AkramView Answer on Stackoverflow
Solution 37 - JavaDavid InnocentView Answer on Stackoverflow
Solution 38 - Javafazal ur RehmanView Answer on Stackoverflow
Solution 39 - JavaPsychopompView Answer on Stackoverflow