android - scanner - Actualizando sdk got NoClassDefFoundError para zxing
zxing android code (10)
Cómo resolver este NoClassDefFoundError. He integrado Zxing en mi aplicación, todo funciona bien. Luego actualicé mi plugin sdk y eclipse, y cuando ejecuto el proyecto, el registro dice
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)`
Agregue el core.jar a la carpeta libs de su proyecto de Android y no lo agregue como un jar externo en la ruta de compilación de Java.
En mi caso, el problema fue con Android Build Tools. Tenía la versión 18, pero necesito tener Android Build Tools versión 19 o posterior porque necesito que mi eclipse cumpla con JDK 1.7 en lugar de 1.6 como CORE.JAR con Java versión 1.7.
También sugeriría que mire los mensajes en la consola de Android durante el proceso de construcción, ya que le dará una idea del problema exacto.
Está haciendo referencia a la Clase com.google.zxing.ResultMetadataType
en CaptureActivity.java
en la línea 94
pero no se puede encontrar la definición de esta Clase (ClassDefNotFound). Si no se puede encontrar, no debe estar en su ruta de clase.
Probablemente haya un archivo .jar en algún lugar de su disco que contenga com.google.zxing.ResultMetadataType
(aparentemente core.jar
) y lo coloque en la ruta de clase de su proyecto para resolver este problema.
Esto me funcionó (después de 8 horas de estar jugando). La clave es que necesita crear la carpeta libs en el proyecto CaptureClient , colocar Core.jar y luego agregar una referencia a Core.jar.
Luego, desde su proyecto, haga referencia al proyecto CaptureClient.
Wow, eso fue aproximadamente un millón de veces más difícil de lo que debería haber sido!
https://.com/a/2248017/1173800
Me sucedió lo mismo con un .jar diferente también después de actualizar el SDK y el complemento.
La respuesta de Andrews a continuación con link .com/a/2248017/180295 con los puntos 3 y 4 funcionó para mí.
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 ordenada anteriormente, pero no estaba seleccionada )
¡Es posible que tengas que hacer un proyecto> limpiar después de esto para que tenga efecto! (Gracias mwengler y Mohamed)
Por alguna razón, ADT ya no incluye bibliotecas de la 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, asset, 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.
Significa exactamente lo que dice. Está utilizando un código de biblioteca que en realidad no incluyó en su aplicación. Asegúrese de que los contenidos de core.jar
del proyecto forman parte de su proyecto, como un proyecto de biblioteca.
Tuve el mismo problema, pero estaba usando la nueva versión de Gradle y Adroid Studio.
Lo que lo resolvió fue salir de Android Studio y hacer una limpieza y compilación desde la línea de comandos usando gradle:
gradle clean
gradle assembleDebug
y la excepción NoClassDefFound desapareció mágicamente
Vaya a Propiedades -> Java Build Path -> "Ordenar y exportar"
¡Entonces ordene el core.jar a la primera posición y selecciónelo!
Usted debe limpiar su proyecto después de su operación. Proyecto -> limpio
Eso solucionará el problema.