java.lang.ClassNotFoundException: no encontró la clase en la ruta: dexpathlist

Karthik Sivam 08/21/2017. 13 answers, 93.384 views
java android android c++ android-ndk android-ndk

Actualmente estoy trabajando en un proyecto en el que tengo que usar ndk puramente nativo. Funcionó cuando intento ejecutar un ejemplo de helloworld de la fuente del motor Irrlicht. Luego trato de usarlo en mi proyecto siguiendo el mismo formato de ese ejemplo. Pero tengo:

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]] 

mientras ejecuta mi proyecto.

Aquí está mi archivo main.cpp:

#include #include #include #include "android_tools.h"
#ifdef _IRR_ANDROID_PLATFORM_
void android_main(android_app* app)
{
__android_log_print(4 , "pom" , "nothing");
} 

#terminara si

en 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) 

Y he dado el nombre de la actividad en AndroidManifest.xml:

...                 

¿Cuál es el error que estoy haciendo aquí? Publicare el código completo si es necasario.

4 Comments
Siddharth_Vyas 03/14/2014
¿Estás usando archivos jar externos?
Karthik Sivam 03/14/2014
@SiddharthVyas No, no estoy usando archivos jar externos en esto.
1 Igor Ganapolsky 08/09/2016
¿Su aplicación es multidexificada? Si es así, entonces eso explica el problema.
j2emanue 07/05/2017
cuando hice un apk firmado, este error no ocurrió. solo depurar

13 Answers


mnsalim 05/23/2017.

Tuve un problema similar, esta es mi solución:

  1. Haga clic derecho en su proyecto y seleccione Properties .
  2. Seleccione Java Build Path en el menú de la izquierda.
  3. Selecciona la pestaña Order and Export .
  4. De la lista, asegúrese de que las bibliotecas o jarras externas que agregó a su proyecto estén checked .
  5. Finalmente, limpia tu proyecto y ejecuta.

También puedes verificar esta respuesta.

4 comments
1 FoxDonut 11/06/2016
Esta es la solución correcta para la pregunta. He probado esto con mi juego libgdx con los mismos errores encontrados anteriormente. Encontré estos errores usando el registro generado con mi teléfono (samsung galaxy S6). Una vez que apliqué esta solución, todos mis problemas fueron resueltos.
2 Zin Min 03/25/2017
No puedo encontrar Propiedades desde el clic derecho del proyecto. Puede ser que soy estúpido. :(
2 user3036320 04/19/2017
por favor, muestra la solución de estudio de Android ...
2 Skyler 07/08/2017
No puedo encontrar las propiedades tampoco, cualquiera sabe cómo navegar a la página listada

Sushil 03/14/2014.

Esto parece ser un problema en tu caso. La ruta relativa de su actividad en manifiesto no es correcta:

 

reemplazar esto con:

 

o

 
1 comments
1 Karthik Sivam 03/14/2014
He intentado ambos, muestra la misma excepción.

Akash Bisariya 03/06/2017.

Debería entender el problema solo con ver

dex errors

Pero tomó medio día arreglar el problema.
Lo soluciono siguiendo las instrucciones de la página de desarrolladores de Android: https://developer.android.com/studio/build/multidex.html

Primero agregue esto al archivo gradle.build:

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

    // Enabling multidex support.
    multiDexEnabled true
}

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

A continuación, amplíe la clase de aplicación (o declare la clase de aplicación en AndroidManifest.xml o override attachBaseContext() ) con la clase MultiDexApplication como se indica en el enlace anterior.

Eso es todo y resolvió el problema.

4 comments
1 milosmns 08/30/2016
Agregar multi-dex es útil solo cuando pasa el límite de recuento de referencias (56k), y es very inestable y very poco fiable antes de Lollipop. Esto debería usarse para solucionar problemas como último recurso.
Akash Bisariya 08/30/2016
entonces, cuál debería ser la solución de acuerdo a ti
milosmns 08/30/2016
Solo digo que Multi-Dex causa más problemas de los que ayuda, lo cual está claramente establecido en el sitio web del desarrollador. No estaría aquí buscando una respuesta si tuviera una, ¿o sí?
Akash Bisariya 08/30/2016
Ok gracias por la información. Actualicen aquí si encontraron una buena solución, sería una gran ayuda.

V. Kalyuzhnyu 07/07/2016.

La eliminación de la aplicación en el dispositivo y la limpieza del proyecto funciona para mí


crazyjune 06/13/2014.
  1. eliminar la carpeta bin
  2. cambiar el orden de las bibliotecas
  3. limpiar y reconstruir

trabajó para mi.


Ali Gürelli 10/13/2016.

Lo resolví usando: ./gradlew --stop command en la terminal de android studio. Después de realizar este comando, limpie y reconstruya el proyecto.


Redman 01/05/2017.

Para cualquiera que tenga habilitación multidex escribe esto

dentro de 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'
} 

escribe una clase EnableMultiDex como abajo

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();

    }
} 

y en AndroidManifest.xml escribe este nombre de className dentro de la etiqueta de la aplicación

 

Ashik Abbas 07/26/2017.

Intenté todas las opciones posibles pero el resultado es cero. Finalmente encontré la solución correcta que es útil para mí. Simplemente vaya a desactivar la ejecución instantánea Vaya a Archivo -> Configuración -> Compilación, Ejecución, Despliegue -> Ejecución instantánea -> Desactive la casilla de verificación para ejecución instantánea . Ejecute su aplicación una vez y este archivo apk funcione correctamente.


Walking Code 05/05/2014.

Simplemente cambie el nombre de su carpeta de lib a libs ,

Luego verá algunas marcas de error en su proyecto para resolver este derecho. Haga clic en proyecto>

Properties > Java Build Path > libraries :

Elimine toda la biblioteca con marcas rojas, luego apply > ok > después de eso, clean your project . TADA ve la magia :)

1 comments
Shubham 10/27/2015
nombre de carpeta es solo libs

Tere Bentikh 09/29/2015.

después de probar las respuestas dadas, descubrí otra razón para la misma Excepción, que tuve que agregar la biblioteca que estoy usando manualmente a mi biblioteca principal a través de

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 

antes de esta solución, utilicé la "configuración de Fix Project" desde el archivo .java en eclipse, pero esto no funcionó, así que tuve que agregarlo manualmente aquí y funcionó


dees91 11/21/2016.

Si recibe este error después de eliminar alguna dependencia de Gradle, verifique su manifiesto y asegúrese de haber eliminado todas las entradas correspondientes a esa dependencia.

1 comments
Petter Friberg 11/21/2016
No agregue la misma respuesta a varias preguntas. Responda el mejor y marque el resto como duplicados. Ver ¿Es aceptable agregar una respuesta duplicada a varias preguntas?

Cuando usa multidex, intente ampliar su clase de aplicación con MultiDexAppication en lugar de la aplicación y anule el método que se indica a continuación para Android debajo de 5.0 (porque 5.0 y superior soportan el multidex)

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

y en dependencias agregar esto

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

Shivegeeky 06/23/2017.

Según mi comprensión, recibo el problema después de la actualización de android studio 2.1 a 2.3 debido a la función instantánea de que mi aplicación no se ejecutará cuando copie el apk de la salida y lo coloque en la tarjeta sd. Para este problema, creo el apk de la opción de compilación do build apk en android studio.

Related questions

Hot questions

Language

Popular Tags