2012-03-27 3 views
19

Cómo solucionar este NoClassDefFoundError. He integrado Zxing en mi aplicación, todo funciona bien. A continuación, he actualizado mi SDK y el plugin eclipse, y cuando corro el proyecto el registro diceLa actualización de SDK obtuvo NoClassDefFoundError para zxing

03-27 17:27:45.173: E/AndroidRuntime(8917): FATAL EXCEPTION: main 
03-27 17:27:45.173: E/AndroidRuntime(8917): java.lang.ExceptionInInitializerError 
03-27 17:27:45.173: E/AndroidRuntime(8917):  at java.lang.Class.newInstanceImpl(Native Method) 
03-27 17:27:45.173: E/AndroidRuntime(8917):  at java.lang.Class.newInstance(Class.java:1429) 
03-27 17:27:45.173: E/AndroidRuntime(8917):  at android.app.Instrumentation.newActivity(Instrumentation.java:1021) 
03-27 17:27:45.173: E/AndroidRuntime(8917):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577) 
03-27 17:27:45.173: E/AndroidRuntime(8917):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
03-27 17:27:45.173: E/AndroidRuntime(8917):  at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
03-27 17:27:45.173: E/AndroidRuntime(8917):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
03-27 17:27:45.173: E/AndroidRuntime(8917):  at android.os.Handler.dispatchMessage(Handler.java:99) 
03-27 17:27:45.173: E/AndroidRuntime(8917):  at android.os.Looper.loop(Looper.java:123) 
03-27 17:27:45.173: E/AndroidRuntime(8917):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
03-27 17:27:45.173: E/AndroidRuntime(8917):  at java.lang.reflect.Method.invokeNative(Native Method) 
03-27 17:27:45.173: E/AndroidRuntime(8917):  at java.lang.reflect.Method.invoke(Method.java:521) 
03-27 17:27:45.173: E/AndroidRuntime(8917):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
03-27 17:27:45.173: E/AndroidRuntime(8917):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
03-27 17:27:45.173: E/AndroidRuntime(8917):  at dalvik.system.NativeStart.main(Native Method) 
03-27 17:27:45.173: E/AndroidRuntime(8917): Caused by: java.lang.NoClassDefFoundError: com.google.zxing.ResultMetadataType 
03-27 17:27:45.173: E/AndroidRuntime(8917):  at records.model.CaptureActivity.<clinit>(CaptureActivity.java:94)` 

Respuesta

38

No tenía que poner el frasco-biblioteca de activos o lib (s), pero sólo marcar la casilla para este frasco en Propiedades -> Java Build Path -> "Orden y de exportación" (estaba en la lista anterior, pero no se ha seleccionado)

Es posible que tenga que hacer un proyecto> limpiar después de que esto surta efecto. (Gracias mwengler y Mohamed)

+1

Esto funcionó para mí una vez que hice el proyecto> limpio. Si funciona para usted vota por lo que otros en problemas lo encuentran. (E idealmente @Kishore aceptaría esta respuesta.) – mwengler

+0

@mwengler Gracias por la punta limpia, solo funcionó para mí cuando hice la limpieza. @ Hasta las gracias por la útil respuesta, ¿podría mencionar la respuesta "Limpiar", porque solo funcionó para mí con la limpieza! –

+0

He encontrado el mismo problema después de actualizar Android SDK. Y este método funciona – flypen

0

Significa exactamente lo que dice. Está utilizando un código de biblioteca que realmente no incluyó en su aplicación. Asegúrese de que los contenidos de core.jar del proyecto sean parte de su proyecto, como un proyecto de biblioteca.

+0

Tengo Core.jar agregado en la carpeta de activos y lo configuré así BuilPath -> config build -> Añadir tarros – Kishore

+0

¡Claro, pero no lo ha configurado para incluir realmente las clases en la aplicación! –

1

Usted hace referencia a la clase com.google.zxing.ResultMetadataType en CaptureActivity.java en la línea 94 pero no se encuentra la definición para esta clase (ClassDefNotFound). Si no se puede encontrar, entonces no debe estar en su ruta de clase.

Probablemente hay un archivo .jar en algún lugar de su disco que contiene com.google.zxing.ResultMetadataType (aparentemente core.jar) colóquelo en la ruta de clase de su proyecto para resolver este problema.

+0

Tengo Core.jar agregado en la carpeta de activos y configurado – Kishore

+0

¿Puedes confirmar que este es el core.jar apropiado? Si lo abre como un archivo comprimido, ¿puede ubicar 'com.google.zxing.ResultMetadataType'? –

+0

sí, si abro allí está el archivo com.google.zxing.ResultMetadataType.class – Kishore

0

Me pasó lo mismo con un .jar diferente después de actualizar el SDK y el complemento.

Andrews responde a continuación con el enlace stackoverflow.com/a/2248017/180295 con los puntos 3 y 4 funcionó para mí.

1

Por alguna razón, ADT ya no incluye bibliotecas de su ruta de compilación en el archivo .apk generado.

Para solucionarlo, cree una carpeta "libs" en la raíz de su proyecto (es decir: bin, src, assets, libs) y coloque el archivo core.jar allí. Elimine todas las demás instancias de su ruta de compilación y todo debería funcionar bien.

NoClassDefFoundError - Eclipse and Android

1

Esto funcionó para mí (después de aproximadamente 8 horas de andar por ahí). La clave es que necesita crear la carpeta libs en el proyecto CaptureClient, colocar en core.jar, luego agregar una referencia a core.jar.

Luego, desde su proyecto, consulte el proyecto CaptureClient.

¡Guau, eso fue aproximadamente un millón de veces más difícil de lo que debería haber sido!

https://stackoverflow.com/a/2248017/1173800

11

Ir a Propiedades -> Java Build Path -> "Orden y exportación"

entonces el orden del core.jar a la primera posición y seleccionarlo!

debe limpiar su proyecto después de su operación.Proyecto -> limpia

que va a resolver el problema

+1

Reordenar a la cima no era necesario para mí. Solo necesito marcar la casilla de verificación. Ah, esto tiene que hacerse para la biblioteca zxing y para su aplicación. –

0

he tenido el mismo problema, pero estaba utilizando la nueva Gradle construir y Adroid estudio.

Lo resolvió para mí era ir fuera de Android Studio y hacer una limpieza y construcción de la línea de comandos usando Gradle:

gradle clean 
gradle assembleDebug 

y la excepción noClassDefFound mágicamente se fue

0

En mi Si el problema era con las herramientas de compilación de Android, tenía la versión 18, pero necesitaba tener la versión 19 o posterior de Android Build Tools porque necesito que mi eclipse JDK sea 1.7 en lugar de 1.6 como CORE.JAR con Java versión 1.7.

También le sugiero que mire los mensajes en la consola de Android durante el proceso de compilación, le dará una idea del problema exacto.

0

Agregue la carpeta core.jar a libs de su proyecto de Android y no la agregue como un jar externo en la ruta de compilación java.

Cuestiones relacionadas