2011-06-06 14 views
5

Creé una aplicación de Android que se utiliza como biblioteca en otra aplicación de Android. Utilicé algunos archivos de terceros en la aplicación de Android que funciona como una biblioteca. Cuando vinculo esta biblioteca en mi aplicación de Android y la ejecuto, obtengo el error de verificación cuando intenta acceder a la clase presente en la biblioteca. ¿Puedo saber cuál es el problema que bloquea aquí para mí? Cualquier ayuda muy apreciada ...Obtener "Causado por: java.lang.VerifyError:"

He adjuntado el registro aquí y Parser1 es la clase dentro de la biblioteca. Estoy obteniendo el error en la línea cuando intento crear el objeto para la clase Parser1.

06-06 10:05:43.742: WARN/dalvikvm(224): VFY: unable to resolve static method 3084: Lorg/codehaus/jackson/JsonToken;.values()[Lorg/codehaus/jackson/JsonToken; 
06-06 10:05:43.742: DEBUG/dalvikvm(224): VFY: replacing opcode 0x71 at 0x0005 
06-06 10:05:43.742: DEBUG/dalvikvm(224): Making a copy of Lcom/support/utils/Parser1;.$SWITCH_TABLE$org$codehaus$jackson$JsonToken code (522 bytes) 
06-06 10:05:43.752: WARN/dalvikvm(224): VFY: unable to find class referenced in signature (Lorg/codehaus/jackson/JsonParser;) 
06-06 10:05:43.752: INFO/dalvikvm(224): Could not find method org.codehaus.jackson.JsonParser.getCurrentToken, referenced from method com.support.utils.Parser1.addSectionContentData 
06-06 10:05:43.761: WARN/dalvikvm(224): VFY: unable to resolve virtual method 3077: Lorg/codehaus/jackson/JsonParser;.getCurrentToken()Lorg/codehaus/jackson/JsonToken; 
06-06 10:05:43.761: DEBUG/dalvikvm(224): VFY: replacing opcode 0x74 at 0x0002 
06-06 10:05:43.761: DEBUG/dalvikvm(224): Making a copy of Lcom/support/utils/Parser1;.addSectionContentData code (2421 bytes) 
06-06 10:05:43.761: WARN/dalvikvm(224): VFY: unable to resolve exception class 685 (Lorg/codehaus/jackson/JsonParseException;) 
06-06 10:05:43.771: WARN/dalvikvm(224): VFY: unable to resolve exception class 685 (Lorg/codehaus/jackson/JsonParseException;) 
06-06 10:05:43.771: WARN/dalvikvm(224): VFY: unable to resolve exception class 685 (Lorg/codehaus/jackson/JsonParseException;) 
06-06 10:05:43.771: WARN/dalvikvm(224): VFY: unable to find exception handler at addr 0x19b 
06-06 10:05:43.771: WARN/dalvikvm(224): VFY: rejected Lcom/support/utils/Parser1;.addSectionContentData (Lorg/codehaus/jackson/JsonParser;Ljava/util/List;Lcom/support/ModelClasses/SectionContent;Lcom/support/ModelClasses/FeatureInfo;ZZLjava/lang/String;)Ljava/util/List; 
06-06 10:05:43.781: WARN/dalvikvm(224): VFY: rejecting opcode 0x0d at 0x019b 
06-06 10:05:43.781: WARN/dalvikvm(224): VFY: rejected Lcom/support/utils/Parser1;.addSectionContentData (Lorg/codehaus/jackson/JsonParser;Ljava/util/List;Lcom/support/ModelClasses/SectionContent;Lcom/support/ModelClasses/FeatureInfo;ZZLjava/lang/String;)Ljava/util/List; 
06-06 10:05:43.781: WARN/dalvikvm(224): Verifier rejected class Lcom/support/utils/Parser1; 
06-06 10:05:43.793: WARN/dalvikvm(224): threadid=15: thread exiting with uncaught exception (group=0x4001b188) 
06-06 10:05:43.793: ERROR/AndroidRuntime(224): Uncaught handler: thread AsyncTask #1 exiting due to uncaught exception 
06-06 10:05:43.812: ERROR/AndroidRuntime(224): java.lang.RuntimeException: An error occured while executing doInBackground() 
06-06 10:05:43.812: ERROR/AndroidRuntime(224):  at android.os.AsyncTask$3.done(AsyncTask.java:200) 
06-06 10:05:43.812: ERROR/AndroidRuntime(224):  at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273) 
06-06 10:05:43.812: ERROR/AndroidRuntime(224):  at java.util.concurrent.FutureTask.setException(FutureTask.java:124) 
06-06 10:05:43.812: ERROR/AndroidRuntime(224):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307) 
06-06 10:05:43.812: ERROR/AndroidRuntime(224):  at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
06-06 10:05:43.812: ERROR/AndroidRuntime(224):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068) 
06-06 10:05:43.812: ERROR/AndroidRuntime(224):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561) 
06-06 10:05:43.812: ERROR/AndroidRuntime(224):  at java.lang.Thread.run(Thread.java:1096) 
06-06 10:05:43.812: ERROR/AndroidRuntime(224): Caused by: java.lang.VerifyError: com.support.utils.Parser1 
06-06 10:05:43.812: ERROR/AndroidRuntime(224):  at com.Sample.checkforversioning(Sample.java:652) 
06-06 10:05:43.812: ERROR/AndroidRuntime(224):  at com.Sample$checkVersionThread.doInBackground(Sample.java:682) 
06-06 10:05:43.812: ERROR/AndroidRuntime(224):  at com.Sample$checkVersionThread.doInBackground(Sample.java:1) 
06-06 10:05:43.812: ERROR/AndroidRuntime(224):  at android.os.AsyncTask$2.call(AsyncTask.java:185) 
06-06 10:05:43.812: ERROR/AndroidRuntime(224):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
06-06 10:05:43.812: ERROR/AndroidRuntime(224):  ... 4 more 
06-06 10:05:43.832: INFO/Process(52): Sending signal. PID: 224 SIG: 3 

Gracias, Senthil.M

+0

¿puede ser más explícito con el error? ¿Y copió su jar dentro del proyecto primero y luego lo agregó a Build Path o solo lo hizo referencia dentro de Build Path desde fuera del proyecto? – sfat

+0

Creé un directorio llamado lib dentro de mi proyecto de biblioteca y luego lo remití a la biblioteca. Y esta biblioteca está vinculada a la aplicación original de Android. – Senthil

+0

bien entonces. ¿Puedes copiar el seguimiento completo de la pila de errores de LogCat para ver de dónde viene el error? – sfat

Respuesta

2

que puede ser causada por algo en el tarro de acceder a algo en Java que no está en el SDK de Android. Busque en LogCat la excepción y le dirá lo que falta. Si tiene las fuentes para el jar de terceros, intente incluirlas directamente en su proyecto; eso ayudará a precisar el problema.

También necesita ejecutar su archivo jar a través de la herramienta "dx" que viene con el SDK.

+0

No tengo el origen de la jarra de terceros. ¿Puedes explicar cómo ejecutar mi jar a través de la herramienta dx? No lo sé mucho. Lo intenté con el enfoque que se da en el enlace http://androidorigin.blogspot.com/2011/02/dex-format-to-jar-format.html. Incluso entonces teniendo el mismo problema. Gracias por la respuesta. – Senthil

+0

No pudo encontrar la clase 'com.support.utils.Parser1'. ¿Es eso algo que se supone que está en el archivo jar? Si está utilizando Eclipse, asegúrese de haber seguido [las instrucciones para incluir un jar de terceros] (http://developer.android.com/resources/faq/commontasks.html # addexternallibrary). Además, si usa Eclipse, no es necesario ejecutar la herramienta dx; se hace automáticamente –

+0

Hola frnd, seguí los pasos de 1 a 3 dados en el enlace del desarrollador. Hay una opción alternativa dada allí como "Agregar biblioteca". Puedo saber si estás mencionando ese. Si hago clic en esa opción Agregar biblioteca, no puedo agregar tarros de terceros. – Senthil

11

En Eclipse, vaya al Project properties -> Java Build Path. Seleccione la pestaña Order and Export y compruebe los archivos jar de terceros.

+2

¿Cómo se aplicaría esto a Android Studio? Creo que estoy teniendo el mismo error. – tccpg288

0

Si está utilizando hormiga, a continuación, se debe añadir todos sus tarros externos a la siguiente dir "libs" y también añadir la línea siguiente en un nuevo archivo: ant.properties: jar.libs.dir = libs

0

Si obtiene un VerifyError después de compilar una versión de lanzamiento de su aplicación con ProGuard, podría estar relacionado con algún problema de optimización. Refer to the documentation, lo que esencialmente sugiere deshabilitar la optimización usando -dontoptimize.

0

Eliminando todos los archivos jar de la carpeta/libs y luego volviéndolos a agregar seguidos de limpiar el proyecto y compilarlo para mí.

0

Se me ocurrió el mismo error, ya que traté de atrapar la excepción SQLDataException en el dispositivo API v.8 ya que la clase correspondiente no está incluida en la API v.8 (el error no ocurrió en los dispositivos v.14, donde se incluye esa clase). De hecho, SQLDataException.class no está presente solo en la API android.jar de v.8, mientras está incluida en la API v.14. Así que reemplacé la excepción SQLDataException con la excepción SQLException (cuya SQLDataException es una subclase) y mi aplicación ahora funciona bien en ambos dispositivos de la API.

Cuestiones relacionadas