Solución para java.lang.NoClassDefFoundError en la importación de jar de terceros en Android

            Al importar frascos de terceros en Android, hay dos operaciones comunes:

  ①: Haga clic con el botón derecho en proyecto-> Ruta de compilación-> configurar ruta de compilación. En las bibliotecas que aparecen, seleccione Agregar ExternalJARs 

  ②: Haga clic con el botón derecho en el proyecto-> Crear ruta-> Agregar bibliotecas, y luego seleccione "Biblioteca de usuario" en el formulario emergente, haga clic en "Siguiente", haga clic en el botón "Bibliotecas de usuario" y haga clic en "Nuevo". . "Haga clic en el botón en el cuadro de texto emergente, haga clic en" Aceptar ", haga clic en el botón" Agregar frascos "para seleccionar el paquete jar de terceros

  Ambos métodos anteriores pueden importar frascos locales en el proyecto, pero cuando hacemos clic en "Ejecutar como" -> "Aplicación de Android", aparece una excepción similar a la siguiente cuando se ejecuta a través de una máquina o emulador real:

  02-18 15: 36: 45.934: E / AndroidRuntime (10401): EXCEPCIÓN FATAL: main
   02-18 15: 36: 45.934: E / AndroidRuntime (10401): java.lang.NoClassDefFoundError: jp.sourceforge.qrcode.QRCodeDecoder
   02 -18 15: 36: 45.934: E / AndroidRuntime (10401): en com.sjc.camer.CameraDemoActivity $ 1.onPictureTaken (CameraDemoActivity.java:119)
   02-18 15: 36: 45.934: E / AndroidRuntime (10401): en android.hardware.Camera $ EventHandler.handleMessage (Camera.java:625)
   02-18 15: 36: 45.934: E / AndroidRuntime (10401): en android.os.Handler.dispatchMessage (Handler.java:130)
   02-18 15: 36: 45.934: E / AndroidRuntime (10401): en android.os.Looper.loop (SourceFile: 351)


    La razón de esta excepción es que solo hicimos referencia al jar de terceros en el proyecto y no lo pusimos en el apk, por lo que el método correcto es el siguiente:

        Cree una carpeta libs debajo del proyecto y copie los frascos de terceros necesarios en él. Agregue el paquete jar de terceros referenciado a la ruta de compilación de trabajo. Luego (la parte más crítica) haga clic derecho en la carpeta / libs-> Build Path-> Usar como carpeta de origen. En este punto, se resuelve la excepción java.lang.NoClassDefFoundError. Pero el nuevo problema vuelve a aparecer. Cuando hacemos clic en "Ejecutar como" -> "Aplicación de Android", se mostrará el siguiente mensaje de error en la consola:

EXCEPCIÓN INESPERADA DE NIVEL SUPERIOR:
java.lang.IllegalArgumentException: ya agregado: Ljp / sourceforge / reedsolomon / Galois;
[19/02/2013 15:24:25 - CameraDemo] Dx en com.android.dx.dex.file.ClassDefsSection.add (ClassDefsSection.java:123)

   La razón de este error es: Convertir las bibliotecas en la carpeta de origen. ¿Causar la compilación de la clase interna repetidamente?

   Solución: haga clic con el botón derecho en la carpeta / libs-> Eliminar de Build Path, compile el proyecto nuevamente, el problema está resuelto.

   

   


Publicado 6 artículos originales · elogiado 4 · 10,000+ vistas

Supongo que te gusta

Origin blog.csdn.net/sjc53yy/article/details/8587806
Recomendado
Clasificación