una studio proyectos para hacer fuente ejemplos descargar como codigos codigo calculadora aplicaciones aplicacion android noclassdeffounderror

studio - descargar proyectos android eclipse



NoClassDefFoundError para el código en una biblioteca Java en Android (24)

1) En el archivo Manifiesto, mencione el nombre de su actividad y la acción correspondiente y también la categoría. 2) En su Actividad, mencione la vista de contenido inicial y mencione los ID de su vista en la actividad.

Estoy experimentando un error muy a menudo entre mis usuarios. La aplicación falla durante el inicio. Cuando se supone que la actividad principal debe cargarse, aparentemente la máquina virtual no puede encontrar la clase. No puedo entender por qué. La arquitectura de la aplicación es que hay un proyecto común que usan tanto mi versión gratuita como pro. No sé si es relevante. Ver el seguimiento de la pila a continuación. ¿Alguna idea?

java.lang.NoClassDefFoundError: com.android.common.MainActivity at com.mycompany.myapp.Splash.onCreate(Splash.java:23) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667) at android.app.ActivityThread.access$1500(ActivityThread.java:117) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:130) at android.app.ActivityThread.main(ActivityThread.java:3687) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:507) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.ClassNotFoundException: com.android.common.MainActivity in loader dalvik.system.PathClassLoader[/system/framework/com.google.android.maps.jar:/data/app/com.android.pro-1.apk]

Editar: Gracias por el comentario a continuación, Richard. Ahora he cambiado com.android.Splash por otra cosa. No era el nombre de clase real de todos modos. Mi error...!


Acabo de descifrar algo con este error.

Solo asegúrese de que el archivo jar de la biblioteca contiene la clase R compilada en el paquete android.support.v7.appcompat y copie todas las res en el "proyecto" de soporte de appcom compatible en su carpeta ANDROID_SDK_HOME / extras / android / support / v7 / appcompat.

Utilizo Netbeans con el complemento de Android y esto resolvió mi problema.


Actividad nuevamente agregada al manifiesto. Intenté en mi manifiesto que la aplicación funcionó.

<activity android:name="com.xxx.xxx.MainActivity"


Actualmente estoy usando SDK 20.0.3 y ninguna de las soluciones anteriores funcionó para mí.

Pude hacer que las cosas funcionen

  • Hacer clic derecho en el proyecto de Android
  • Luego seleccionando Ruta de compilación -> Fuente de enlace para mostrar el cuadro de diálogo Fuente de enlace.
  • Luego, especifiqué la carpeta ''src'' del proyecto Java y le asigné un nombre distinto al predeterminado de ''src'' (por ejemplo, ''src2'').
  • Ahora puede hacer clic con el botón derecho en -> eliminar la nueva carpeta ''src2''.

Esto trajo este creado archivos de clase de Java que se compilaron para la máquina virtual de Dalvik en lugar de la máquina virtual de Java cuando se construyó el proyecto de Android. Esto permitió que los archivos de la clase Java en el archivo jar de la Biblioteca Android se transfirieran al dexing cuando se creó el archivo .apk del proyecto Android. Ahora, cuando se ejecutó la aplicación, se encontraron las clases del proyecto Java en lugar de arrojar un Java.lang.NoClassDefFoundError.

Si desea utilizar un archivo jar en lugar de vincular el origen, deberá crear un proyecto de biblioteca Android. (Un proyecto de Android con ''es una biblioteca'' marcado en Propiedades -> Android). Luego necesitará vincular la fuente del Proyecto Java al proyecto de la Biblioteca Android como se describe arriba o copiar los archivos fuente de la carpeta ''src'' de el Proyecto Java a la carpeta ''src'' del proyecto de la biblioteca Android. Construye el proyecto de la biblioteca de Android. Luego podrá copiar el archivo jar de Android Project que se creó en la carpeta ''libs'' de la carpeta de Android porque los archivos de clase en él se compilaron para la VM Davlik en lugar de la VM Java cuando se creó el proyecto Android. Esto permite que los archivos de la clase Java en el archivo jar de la biblioteca de Android se transfieran a través de dexing cuando se crea el archivo .apk del proyecto Android. Ahora, cuando se ejecuta la aplicación, se encontrarán las clases del proyecto Java en lugar de lanzarse Java.lang.NoClassDefFoundError.


Algún tiempo java.lang.NoClassDefFoundError: error aparece cuando se usa ART en lugar de tiempo de ejecución de Dalvik. Para cambiar el tiempo de ejecución solo ve a Developer Option -> Select Runtime -> Dalvik.


Conocí NoClassDefFoundError para una clase que existe en mi proyecto (no una clase de biblioteca). La clase existe pero obtuve NoClassDefFoundError. En mi caso, el problema era el soporte multidex. El problema y la solución están aquí: Android Multidex y bibliotecas de soporte

Obtiene este error para versiones de Android inferiores a 5.0.


En Android Studio:

1) Agregue multiDexEnabled = true en su configuración predeterminada

2) Agregue compilación com.android.support:multidex:1.0.0 en sus dependencias

3) La Application class extiende MultiDexApplication lugar de simplemente Application


En caso de que ayude a alguien, me enfrenté al mismo problema. Mi archivo jar estaba en el directorio libs y el jar se agregó a la ruta de compilación. Todavía estaba arrojando esa excepción.

Limpié el proyecto y funcionó para mí.

Eclipse -> Proyecto -> Limpiar -> Seleccionar el proyecto y limpiar


En mi caso, estaba tratando de agregar una clase java normal (de un proyecto java normal) compilada con jre 1.7 a un proyecto de aplicación para Android compilado con jre 1.7.

La solución fue recompilar esa clase normal de Java con jre 1.6 y agregar referencias al proyecto de la aplicación de Android (compilado con jre 1.6 también) como de costumbre (en orden de tabulación y exportación asegúrese de verificar la clase, el proyecto, etc.).

El mismo proceso, cuando se utiliza una biblioteca de Android para hacer referencia a las clases externas normales de Java.

No sé lo que está mal con jre 1.7, al compilar las clases normales de Java de un proyecto Java normal e intentar hacer referencia a ellas en la aplicación de Android o en los proyectos de la biblioteca de Android.

Si no utiliza las clases normales de Java (de un proyecto Java normal), no necesita cambiar a jre 1.6.


Encontré este NoClassDefFoundError cuando utilicé java.nio.charset.StandardCharsets.

La razón es que StandardCharsets no ha existido hasta JRE 1.7. Si configuro la versión de compilación java en 1.7, Eclipse se quejó de que "Android requiere un nivel de cumplimiento del compilador de 5.0 o 6.0". Así que lo arreglé haciendo clic con el botón derecho en el nombre del proyecto-> Herramientas de Android-> Reparar las propiedades del proyecto. Está compilado con JRE1.6.

Sin embargo, porque StandardCharsets no ha existido hasta 1.7. Informó NoClassDefFoundError cuando lo ejecuté.

No me he dado cuenta de esto hasta después de probar muchos otros métodos, incluida la reinstalación de JDK. La verdadera razón está claramente expresada por el significado de NoClassDefFoundError: la clase no se puede encontrar en tiempo de ejecución aunque pasó la compilación.

La conclusión general es que, siempre que Android no funcione con JRE 1.7, si utiliza cualquier característica nueva proporcionada desde 1.7, encontrará este error.

¡Mi solución es que copié esos códigos fuente en mi código!


Este error también se genera cuando crea una aplicación que usa la API de Google (como Maps) pero la ejecuta en un dispositivo que se dirige a la API de Android.


Intente ir a Proyecto -> Propiedades -> Ruta de compilación de Java -> Ordenar y exportar y asegúrese de que las bibliotecas privadas de Android estén marcadas para su proyecto y para todos los demás proyectos de biblioteca que esté utilizando. Obtuve la solución siguiendo el siguiente enlace del proyecto Android NoClassDefFoundError .


La descripción NoClassDefFoundError es, desde la etiqueta SO:

El error Java arrojado si la máquina virtual de Java o una instancia de ClassLoader intenta cargar en la definición de una clase (como parte de una llamada al método normal o como parte de la creación de una nueva instancia utilizando la nueva expresión) y no se pudo definir la clase ser encontrado. La definición de clase buscada existía cuando se compilaba la clase en ejecución, pero ya no se puede encontrar la definición.

O mejor:

NoClassDefFoundError en Java se produce cuando Java Virtual Machine no puede encontrar una clase particular en tiempo de ejecución que estuvo disponible durante el tiempo de compilación.

de this página. Compruébalo, hay algunas maneras de resolver el error. Espero que ayude.


Otra idea Por ejemplo, tiene una clase derivada de "android.support.v4.app.Fragment".

Sin embargo, cometió un error y lo heredó de "android.app.Fragment". Entonces tendrá este error en los dispositivos Android 2.


Para mí, el problema era que la biblioteca a la que se hacía referencia se había construido utilizando java 7. Lo resolví reconstruyendo con el 1.6 JDK.


Para mí, este problema estaba relacionado con la API que estaba usando no implementada. Por ejemplo, utilicé un ZSDK_API.jar como referencia.

Para solucionar el problema tuve que hacer clic derecho en el proyecto y seleccionar propiedades. Desde JAVA BUILD PATH, tuve que agregar la API que no se estaba implementando. Esto fue extraño ya que la aplicación arrojaba la clase MainActivity no encontrada y en realidad el error fue causado por la clase DiscoveryHandler que no se encontró.

Espera que esto ayude a alguien.


Probé todas las soluciones mencionadas anteriormente pero no funcionó para mí, esto es lo que hice para que se haga proyecto-> config build path-> order and export-> mover proyecto dependiente en la parte superior


Prueba ir a

  • Haga clic derecho en el proyecto
  • Ruta de compilación de Java
  • Fuente
  • lado derecho -> botón Agregar carpeta
  • carpeta libs seleccionada y OK

Espero que ayude.



Solucioné este problema agregando la ruta del proyecto de biblioteca en project.propertied manualmente. de alguna forma, eclipse no agregó esta entrada de forma automática junto con "agregar proyecto". así que el punto donde la aplicación intentaba referir cualquier componente dentro del proyecto lib estaba fallando.

también puedes probar lo mismo. dependencia de la aplicación en projec.properties como

android.library.reference.1 = .... / android-sdks / extras / google / google_play_services / libproject / google-play-services_lib

y correr .


Soluciones:

  1. Artículo de lista
  2. Verificar el pedido de exportaciones
  3. Habilitar Multi Dex
  4. Verifique el nivel de vistas de la API en el diseño. Enfrenté el mismo problema con searchView. Compruebo el nivel de la API al agregar la vista de búsqueda, pero agregué implementa SearchView.OnQueryTextListener al archivo de la clase.

Supongo que no especifica el objetivo de javac al crear la biblioteca común, por lo que javac usa automáticamente el último objetivo disponible, que es probable 1.7 (Java7) o 1.8 (Java8).

Ya se ha dicho que

Android requiere nivel de cumplimiento del compilador 5.0 o 6.0

dx de las herramientas de compilación de Android <19.0.0 no es capaz de convertir código de byte Java7 (o superior) en bytecode de Dalvik.

Entonces, use una versión de herramientas de compilación> = 19.0.0 o use javac con -target 6 , modificando por ejemplo su ant build.xml siguiente manera:

<javac srcdir="src/" destdir="build/" target="6" />


Tuve el mismo problema, hice lo siguiente para solucionar el problema.

  1. Vaya a "Propiedades" del proyecto.
  2. Seleccione "Ruta de compilación de Java"
  3. Seleccione la pestaña "Ordenar y exportar"
  4. Debería ver las rutas y dependencias "src" y "gen" del proyecto seleccionado aquí.
  5. El orden en que se enumeraron fue primero "src" y luego "gen"
  6. Los cambio, para que la carpeta "gen" se construya antes de "src"

gen - código automatizado en el proyecto (de dependencias y referencias)
src - código fuente en el proyecto

No hubo necesidad de reiniciar el Eclipse. Simplemente comenzó a funcionar.

Honestamente, nunca he probado "Android Tools> Fix Project Properties", a veces podría estar haciendo lo mismo. No sé, acabo de hacer lo anterior después de ver el mensaje de error, pensando que algo anda mal con las rutas de compilación.

Editar

Más tarde no fue suficiente, estaba recibiendo el error nuevamente. Luego "verifiqué" todas las dependencias enumeradas en esa vista. Ahora funciona de nuevo. Hasta aquí todo bien. Mantendré esto actualizado si falla nuevamente.

FYI : en mi último intento, probé "Herramientas de Android> Reparar las propiedades del proyecto", pero no funcionó para mí.


jar solía estar en la carpeta lib /, ahora están en libs / Si usa lib, puede mover sus jar de lib a libs y eliminar las dependencias de las propiedades del proyecto / ruta de compilación java porque Android ahora las encontrará automáticamente .