java - NoClassDefFoundError-Eclipse y Android




ant build (23)

Estoy teniendo un problema al intentar ejecutar una aplicación de Android que, hasta agregar una segunda biblioteca externa a su ruta de compilación, estaba funcionando bien. Desde que agregué el archivo scoreninja jar, ahora obtengo un NoClassDefFoundError cuando intento ejecutar la aplicación.

Aquí está el mensaje:

02-11 21:45:26.154: ERROR/AndroidRuntime(3654): java.lang.NoClassDefFoundError: com.scoreninja.adapter.ScoreNinjaAdapter

Como todos los scripts de construcción son generados por las herramientas de Android (?), No estoy seguro de qué otra cosa puedo hacer aparte de limpiar y reconstruir o reiniciar Eclipse (ya he probado los tres). ¿Alguien sabe cómo puedo enmendar esto?


Answers

Tuve este problema y fue causado por no "exportar" la biblioteca. El problema se debió simplemente a que los archivos .class para algunas clases no están disponibles al empaquetar el tiempo de compilación de APK.Funcionará bien sin exportar

En mi caso, estaba usando la clase "CusrsorAdapter" y en "JavaBuildPath-> Order and Export" No verifiqué la compatibilidad con V4 jar. Una vez seleccionado, el problema desapareció.

Para asegurarse de que está obteniendo el error noClassDefFound debido a la razón anterior, verifique su logacat, verá un error de súper clase desconocido en el tiempo de ejecución.


La solución here funcionó para mí. Es una cuestión de importar la biblioteca a la carpeta libs, luego modificar el archivo build.gradle y luego limpiar con gradlew.


asegúrese de que su archivo jar esté en el directorio libs de su proyecto, ya que está utilizando una versión ADT más nueva con su eclipse.


Como lo entendí, su proyecto no muestra errores, porque incluyó el Jar. Pero el Jar no se utilizará cuando su Proyecto se "exportó" al dispositivo. Prueba esto

Proyecto -> Propiedades

Java Build Path / Order and Export

[✔] Tu jarra


Haga clic con el botón derecho en la carpeta del proyecto, busque Propiedades en la ruta de compilación de Java y seleccione los archivos jar que vea. Esto ha funcionado para mí.


Si cambia su orden y exporta en la ruta de compilación de su proyecto, este error no se producirá. La otra forma de lograrlo es a través de .classpath en la carpeta de su proyecto.


Tengo exactamente el mismo problema ... Para solucionarlo, acabo de quitar mis Android Private Libs en "construir ruta" y hacer clic en Aceptar ... y cuando abrí de nuevo la "ruta de construcción", eclipse los había agregado de nuevo. y luego funcionó para mí;) ...


Todas las respuestas existentes no funcionan para mí porque mi caso es un poco diferente. Tardé unas horas en hacerlo funcionar. Estoy usando Eclipse.

Mi proyecto de Android incluye otro proyecto normal de Java 1.6, que necesita un archivo jar de terceros. El truco es:

  • incluya el jar en el proyecto java normal para que se compile (solo), no lo marque en la pestaña "Ordenar y exportar"
  • también copie este archivo jar en la carpeta "libs" del proyecto de Android para que esté disponible en tiempo de ejecución

Espero que esto ayude a aquellos que tienen escenarios similares como el mío.


Prueba esto:-

Paso 1

Agregue todas las bibliotecas para crear pat en Eclipse (significa que todas las bibliotecas hacen referencia a las bibliotecas)

Paso 2

Elimine el archivo R.java y vuelva a construir el proyecto. No te preocupes, R.java se recreará automáticamente.

Chill :)


Pasé dos días tratando de resolver este problema después de actualizar ADT. Finalmente tuve la suerte de obtener este post aquí:

code.google.com/p/android/issues/detail?id=55304

Lo que me llevó en la dirección correcta. cuando siga la solución, recuerde reemplazar la biblioteca de soporte de Android de todos sus proyectos a la misma versión (elimínela y vuelva a instalarla en los proyectos). Espero que esto ayude, buena suerte


Tuve este mismo error con ADT22. Se resolvió revisando "Bibliotecas privadas de Android" en propiedades -> Java build path -> Order and export. Si está utilizando algún proyecto de biblioteca, lo mismo debería hacerse para ellos también.


Tuve este problema después de actualizar ADT.

Estaba almacenando todos mis archivos JAR en una carpeta llamada "lib" y agregando los archivos jar a la ruta de compilación de la forma normal de Eclipse. Esto funcionó bien hasta mi actualización.

Después de mi actualización, recibí el NoClassDefFoundError para una clase que pude ver claramente que estaba incluido en el archivo (revisando las clases de ReferencedLibraries).

La solución fue eliminar mis archivos jar de la ruta de compilación y cambiar el nombre de mi carpeta "lib" a "libs". Esta es una convención de hormigas y parece ser la forma en que el nuevo ADT encuentra e incluye las bibliotecas en un archivo .apk. Una vez que hice esto, todo funcionó bien.


He cambiado el orden de los proyectos incluidos (Eclipse / Configurar Build Path / Order and Export). He movido mis dos proyectos dependientes a la parte superior de la lista "Ordenar y exportar". Se resolvió el problema "NoClassDefFoundError".

Es extraño para mi. No escuché sobre la importancia del orden de las bibliotecas y proyectos incluidos. Android + Eclipse es divertido :)


No tuve que poner la biblioteca de archivos jar en recursos o lib (s), sino que solo tenía que marcar la casilla de este archivo en Propiedades -> Java Build Path -> "Order and Export" (estaba ordenado anteriormente, pero no estaba seleccionado )


Si prefiere saber con qué archivos está relacionada la solución, esto es lo que encontré. Simplemente cambia el archivo .classpath a

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="src" path="gen"/>
    <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
    <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
    <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
    <classpathentry kind="output" path="bin/classes"/>
</classpath>

Reemplace el archivo .classpath en todos los proyectos de la biblioteca y en el proyecto principal de Android. El archivo .classpath está en la carpeta raíz del proyecto Eclipse. Por alguna razón, no olvide agregar sus propias entradas de classpath, si tiene alguna (compare con su versión actual de .classpath).

Creo que este es el mismo resultado que al pasar por los menús de eclipse como componavt-user explicado anteriormente (Eclipse / Configurar Build Path / Order and Export).



Probé varias cosas y la razón del error en mi caso fue el conflicto entre maps.jar y Google Api en Java Build Path-> Libraries. Entonces, cuando quité el maps.jar funcionó bien.

Saludos,

wahib


A veces ocurrirá debido a que no incluye jar, que tiene dependencia, con la etiqueta "uses-libary" en su AndroidManifest.xml.

Además, asegúrese de que esté dentro de la etiqueta "application".

Saludos,

Ravi


a veces hay que tomar todo el proyecto externo como biblioteca y no solo el archivo jar:

mi problema se resolvió agregando todo el proyecto (en mi caso google-play-services_lib) como biblioteca y no solo el archivo jar. Los pasos para hacerlo (desde la respuesta @style ):

  1. Archivo-> Nuevo-> Otro
  2. Seleccione el proyecto de Android
  3. Seleccione "Crear proyecto de fuente existente"
  4. Haga clic en el botón "Examinar ..." y navegue hasta el proyecto deseado
  5. Finalizar (ahora proyecto de barra de acción en tu espacio de trabajo)
  6. Haga clic derecho en su proyecto -> Propiedades
  7. En Android-> sección Biblioteca haga clic en Agregar
  8. Seleccione el proyecto recientemente agregado -> Ok

Al agregar el jar externo a su ruta de compilación, solo agregue el jar a su paquete, pero no estará disponible durante el tiempo de ejecución.

Para que el frasco esté disponible en tiempo de ejecución , debe:

  • Pon el frasco debajo de tu carpeta de assets
  • Incluye esta copia del tarro en tu ruta de construcción.
  • Ir a la pestaña de exportación en la misma ventana emergente
  • Marque la casilla contra el tarro recién agregado

Lo mismo funcionó para mí: Propiedades -> Java Build Path -> "Order and Export" Interesantemente, ¿por qué esto no se hace automáticamente? Supongo que falta algún ajuste. También esto me pasó después de la actualización del SDK.


Tenía esto para MapActivity. Las compilaciones en Eclipse obtienen NoClassDefFound en el depurador.

Se olvidó de agregar la biblioteca para manifestar, dentro del elemento <Application>...</Application>

<uses-library android:name="com.google.android.maps" />

Resulta que no me he visto lo suficientemente bien en el seguimiento de mi pila, el problema no es que el JAR externo no esté incluido.

El problema es que a la plataforma Android le falta javax.naming. * Y muchos otros paquetes que el JAR externo también tiene dependencias.

Agregar archivos JAR externos y configurar Ordenar y exportar en Eclipse funciona como se esperaba con los proyectos de Android.





java android eclipse ant build