2011-05-27 702 views
19

La mayoría de los dispositivos se pueden ejecutar mi aplicación pero me dieron este informe de errores:Android ClassNotFoundException aplicación para la actividad principal

java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.company.app/com.company.app.MainActivity}: java.lang.ClassNotFoundException: com.company.app.MainActivity in loader dalvik.system.PathClassLoader[/mnt/asec/com.company.app-1/pkg.apk] 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2755) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2854) 
at android.app.ActivityThread.access$2300(ActivityThread.java:136) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2179) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:143) 
at android.app.ActivityThread.main(ActivityThread.java:5068) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:521) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.ClassNotFoundException: com.company.app.MainActivity in loader dalvik.system.PathClassLoader[/mnt/asec/com.company.app-1/pkg.apk] 
at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:573) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:532) 
at android.app.Instrumentation.newActivity(Instrumentation.java:1034) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2747) 
... 11 more 

he encontrado que hay una respuesta relacionada: ClassNotFoundException Android

pero la pregunta es, mi excepción ocurre antes de cualquier línea de código que escribo, entonces, ¿cómo puedo asegurarme de que el cargador de clases esté cargado?

+0

¿Ha definido su actividad en el archivo Menifest? – Sandy

+0

La tarjeta SD se retira o se monta en un PC http://stackoverflow.com/questions/4820554/android-unable-to-instantiate-activity-classnotfoundexception http://stackoverflow.com/ preguntas/5483947/android-intermitente-class-not-found-run-time-exception – Dante

+0

La tarjeta SD se extrae o se monta en una PC http://stackoverflow.com/questions/4820554/android-unable- to-instantiate-activity-classnotfoundexception http://stackoverflow.com/questions/5483947/android-intermitente-class-not-found-run-time-exception – Dante

Respuesta

6

Cierre su eclipse y ábralo. Limpia tu proyecto y haz una actualización. Luego corre y mira.

+1

el problema solo ocurre en el lado del cliente. :/ –

+3

No estoy seguro de por qué esto fue downvoted. Reiniciar Eclipse lo solucionó por mí. – cratonica

9

consigo este error cuando mi clase no está bien definida en el manifiesto, normalmente porque no he puesto en el espacio de nombre correcto como en:

<activity android:name="com.company.project.main.MyMainActivity" ...> 

en contraposición a

<activity android:name="MyMainActivity" ...> 

No estoy seguro de por qué funcionaría para usted en algunos dispositivos y otros no.

+4

, es la forma correcta de definir – Sandy

+0

buen punto. Aunque en este ejemplo si el proyecto es com.company.project, creo que debería ser ".main.MyMainActivity"? – fredw

+0

sí, antes Actividad, toma el nombre del paquete, el nombre del paquete ya está definido en el menifiesto – Sandy

19

Tuve exactamente el mismo problema. De repente, mi aplicación dejó de funcionar. Me didint hacer ningún cambio a manifestarse, pero con algún accidente no faltaba primera fila:

<?xml version="1.0" encoding="utf-8"?>

Esto causó ClassNotFoundException para la actividad de lanzamiento. Estuve luchando con eso por algunas horas y lo pasé por alto cada vez que revisaba el manifiesto por posible error.

Algo extraño sucedió después de haber eliminado esta fila nuevamente. Suprise, la aplicación de sorpresa todavía estaba funcionando. (Y yo no se debe reconstruir aplicación)

Esperanza esta ayuda a alguien para salvar a las pocas horas.

+0

me salvó el tiempo. – wangqi060934

+1

Lamentablemente, obtengo esta excepción incluso con esa línea en la parte superior del manifiesto. Aunque es un poco aleatorio ... – marzapower

+0

Esta respuesta me ayudó. También tuve que ejecutar 'gradle clean', ya que el antiguo APK de depuración todavía no era correcto. –

0

Acabo de toparme con este problema. Resulta que fue porque había movido mi MainActivity a un nuevo paquete.

Lo que hice fue moverlo de

com.example.MainActivity 

en

Activity 

así que en mi manifiesto que se veía así:

android:name="Activity.MainActivity"` 

lo resolvió moviendo de nuevo en el paquete original También puede ser resuelto por cambiar el nombre de los paquetes correctamente:

Ej: com.example.Activity.MainActivity

Espero que esto ayude a alguien.

3

Tuve el mismo problema y el problema fue una biblioteca de terceros que usa la Biblioteca de soporte de Android.

myproject/libs/android-support-v4.jar 
3rdpartylib/libs/android-support-v4.jar 

Cuando actualicé la biblioteca con una versión más nueva, la biblioteca de soporte también se actualizó, pero no en mi proyecto. Después de eso no pude iniciar la aplicación con este error.Después de hacer que ambas bibliotecas fueran iguales (copia), estaba bien.

0

Gracias al control de versiones, me di cuenta de que yo no tenía estas líneas en mi archivo xml: .classpath

<classpathentry kind="src" path="src"/> 
<classpathentry kind="src" path="gen"/> 

ellas fueron causa de clase no encontrado para la actividad principal.

1

Tuve este problema durante los últimos días. Podía ejecutar mi aplicación en todos los entornos de prueba, podía exportar un apk de lanzamiento e instalarlo y ejecutarlo en todos los entornos de prueba, pero cuando subía el apk a la tienda de juegos y lo instalaba desde la tienda de juegos, la aplicación cerraría lanzando ClassNotFoundException . Resultó que en mi proyecto estaba enviando datos de formularios de varias partes a una API web, y para hacerlo necesito algunas bibliotecas externas. Al principio acabo de incluir todos los mim4j, httpclient y httpcore.jars (resulta ser una gran cantidad de jarras).

Después de eliminar casi todos ellos uno por uno y ver si mi proyecto aún se construiría, me quedé con un solo contenedor QUE EN REALIDAD SE REQUIERE. Lo que se lleva es eliminar los archivos jar que no son necesarios para compilar. Luego probé la aplicación y resulta que necesitaba volver a agregar uno de los archivos porque sus recursos estaban referenciados por el que se requería para construir el proyecto. Asegúrese de probar todas las funciones de su aplicación después de eliminar las jarras.

Pasé luego a través de cada proyecto de biblioteca que fue incluida y se fue a hacer clic derecho sobre project -> properties -> java build path -> order and export y comprobado todas las cajas PARA CADA BIBLIOTECA y MI PROPIO PAQUETE.

Luego hice un project -> clean en cada proyecto que se incluye y en el proyecto principal.

Luego exporté el apk y puse el paquete para la prueba beta y finalmente funcionó en los dispositivos de los usuarios.

1

Me encontré con este problema y se solucionó usando this.

No había revisado una biblioteca externa en "Ordenar y exportar" y recibí el error.

2

En eclipse, seleccione Propiedades> Ruta de compilación de Java> Origen y vea si la carpeta de salida siempre es la predeterminada (/ bin/classes).

Para mí, esto fue un problema debido al complemento maven: cada vez que hago clic derecho> Maven> Actualizar proyecto ...> Ok, cambia la carpeta de salida de la carpeta src a target/classes, causando la ClassNotFoundException.

+0

+1. Cambié mi proyecto a Maven Project, por lo que cambió mi carpeta de salida a '/ target/classes'. De ahí el error de clase no encontrada, ¡porque está en el camino equivocado! – 40Plot

1

Ninguna de las respuestas anteriores funcionó para mí, aportando mi solución si le va a dedicar algunas horas a cualquiera en el futuro.

Lo que aparentemente funcionó para mí fue eliminar un soporte adicional lib v4 jar en mi proyecto.

Después de actualizar el soporte lib a través de las herramientas de Android, tuve que corregir los desajustes de jar en muchas bibliotecas que uso y apuntarlas al mismo jar en la carpeta de android-sdks.

Lo agregué accidentalmente a mi proyecto también, y por alguna razón hizo que mi clase MainActivity no se encontrara en tiempo de ejecución, porque el jar también estaba en la biblioteca android-support-v7-appcompat que estaba usando.

Sin errores en eclipse en absoluto.

Quité el contenedor de mi proyecto y revisé el contenedor en la biblioteca de aplicación de v7 en la pestaña exportar para que también estuviera disponible para mi proyecto, y listo, la aplicación funciona.

Cuestiones relacionadas