VerifyError al usar jCIFS en Android

Estoy intentando usar el archivo JAR jCIFS versión 1.3.17 en mi aplicación de Android. La aplicación se compila correctamente y se implementa en mi teléfono. Cuando mi aplicación intenta usar la biblioteca jCIFS, recibo el siguiente mensaje de error:

E/dalvikvm( 3176): Could not find class 'jcifs.smb.SmbFile', referenced from method com.test.androidapp.service.BackgroundService.copyFiles
W/dalvikvm( 3176): VFY: unable to resolve new-instance 94 (Ljcifs/smb/SmbFile;) in Lcom/test/androidapp/service/BackgroundService;
D/dalvikvm( 3176): VFY: replacing opcode 0x22 at 0x0001
W/dalvikvm( 3176): VFY: unable to resolve exception class 93 (Ljcifs/smb/SmbException;)
W/dalvikvm( 3176): VFY: unable to find exception handler at addr 0x6c
W/dalvikvm( 3176): VFY:  rejected Lcom/test/androidapp/service/BackgroundService;.copyFiles ()Z
W/dalvikvm( 3176): VFY:  rejecting opcode 0x0d at 0x006c
W/dalvikvm( 3176): VFY:  rejected Lcom/test/androidapp/service/BackgroundService;.copyFiles ()Z
W/dalvikvm( 3176): Verifier rejected class Lcom/test/androidapp/service/BackgroundService;
W/dalvikvm( 3176): Class init failed in newInstance call (Lcom/test/androidapp/service/BackgroundService;)
D/AndroidRuntime( 3176): Shutting down VM
W/dalvikvm( 3176): threadid=1: thread exiting with uncaught exception (group=0x4001d5a0)
E/AndroidRuntime( 3176): FATAL EXCEPTION: main
E/AndroidRuntime( 3176): java.lang.VerifyError: com.test.androidapp.service.BackgroundService
E/AndroidRuntime( 3176):    at java.lang.Class.newInstanceImpl(Native Method)
E/AndroidRuntime( 3176):    at java.lang.Class.newInstance(Class.java:1409)
E/AndroidRuntime( 3176):    at android.app.ActivityThread.handleCreateService(ActivityThread.java:2174)
E/AndroidRuntime( 3176):    at android.app.ActivityThread.access$2500(ActivityThread.java:132)
E/AndroidRuntime( 3176):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1102)
E/AndroidRuntime( 3176):    at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime( 3176):    at android.os.Looper.loop(Looper.java:150)
E/AndroidRuntime( 3176):    at android.app.ActivityThread.main(ActivityThread.java:4263)
E/AndroidRuntime( 3176):    at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 3176):    at java.lang.reflect.Method.invoke(Method.java:507)
E/AndroidRuntime( 3176):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
E/AndroidRuntime( 3176):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
E/AndroidRuntime( 3176):    at dalvik.system.NativeStart.main(Native Method)
W/ActivityManager(  129):   Force finishing activity com.test.androidapp/.activity.MainActivity

¿Alguien puede explicar por qué Android no encuentra jCIFS?

preguntado el 03 de mayo de 12 a las 08:05

1 Respuestas

Suponiendo que tiene la última versión de las herramientas SDK de Android (y, si corresponde, el complemento ADT para Eclipse), el procedimiento adecuado para agregar un JAR de terceros es:

Paso # 1: crea un libs/ directorio en su proyecto

Paso #2: Ponga el JAR en el libs/ directorio

Tenga en cuenta que no necesita meterse con las rutas de compilación ni nada, eso ahora se maneja automáticamente en Eclipse, tal como lo ha sido para las compilaciones de línea de comandos desde el principio.

Este error parece que su JAR está disponible en el momento de la compilación, pero no está empaquetado en su APK, como que Eclipse conoce el JAR (por ejemplo, a través de ajustes manuales de la ruta de compilación) pero las herramientas de Android no conocen el JAR.

contestado el 03 de mayo de 12 a las 12:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.