Получение Вызвано: java.lang.VerifyError:

Я создал приложение для Android, которое используется в качестве библиотеки в другом приложении для Android. Я использовал некоторые сторонние банки в приложении для Android, которое действует как библиотека. Когда я связываю эту библиотеку в своем приложении для Android и запускаю ее, я получаю сообщение об ошибке проверки при попытке доступа к классу, присутствующему в библиотеке. Могу ли я узнать, в чем проблема, блокирующая здесь для меня? Любая помощь очень ценится ..

Я прикрепил лог здесь, и Parser1 — это класс внутри библиотеки. Я получаю сообщение об ошибке в строке, когда пытаюсь создать объект для класса 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

Спасибо, Senthil.M


person Senthil    schedule 06.06.2011    source источник
comment
можно поподробнее об ошибке? И вы сначала скопировали свою банку внутри проекта, а затем добавили ее в путь сборки или вы только ссылались на нее внутри пути сборки извне проекта?   -  person Andrei Sfat    schedule 06.06.2011
comment
Я создал каталог с именем lib внутри своего библиотечного проекта, а затем сослался на него в библиотеке. И эта библиотека связана с оригинальным приложением для Android.   -  person Senthil    schedule 06.06.2011
comment
тогда ладно. Не могли бы вы скопировать полную трассировку стека ошибок из LogCat, чтобы увидеть, откуда возникает ошибка?   -  person Andrei Sfat    schedule 06.06.2011
comment
Привет, я отредактировал свой раздел вопросов с прикрепленными журналами.. Спасибо за ответ..   -  person Senthil    schedule 06.06.2011


Ответы (6)


В Eclipse перейдите к Project properties -> Java Build Path. Выберите вкладку Order and Export и проверьте сторонние банки.

person Cygni    schedule 20.05.2012
comment
Как это применимо к Android Studio? Я считаю, что у меня такая же ошибка. - person tccpg288; 19.04.2016

Это может быть вызвано тем, что что-то в банке обращается к чему-то на Java, чего нет в Android SDK. Найдите в LogCat исключение, и оно может сказать вам, чего ему не хватает. Если у вас есть исходники для стороннего jar-файла, попробуйте включить их непосредственно в свой проект; это поможет определить проблему.

Вам также необходимо запустить файл jar с помощью инструмента «dx», который поставляется с sdk.

person Ted Hopp    schedule 06.06.2011
comment
У меня нет источника стороннего кувшина. Не могли бы вы объяснить, как запустить мой кувшин через инструмент dx. У меня нет много знаний об этом. Я попробовал подход, указанный в ссылке androidorigin.blogspot.com/2011/02/. Даже тогда возникает такая же проблема. Спасибо за ответ.. - person Senthil; 06.06.2011
comment
Не удалось найти класс com.support.utils.Parser1. Это то, что должно быть в файле jar? Если вы используете Eclipse, убедитесь, что вы выполнили инструкции по включению третьего баночка для вечеринок. Кроме того, если вы используете Eclipse, нет необходимости запускать инструмент dx; это делается автоматически. - person Ted Hopp; 06.06.2011
comment
Привет, друг, я выполнил шаги от 1 до 3, указанные в ссылке для разработчиков. Там есть альтернативный вариант, например «Добавить библиотеку». Могу я узнать, упоминаете ли вы об этом. Если я выберу эту опцию «Добавить библиотеку», я не смогу добавить сторонние банки. - person Senthil; 06.06.2011
comment
@Senthil: я не могу добавлять сторонние банки. - Почему бы нет? Есть ли сообщение об ошибке? - person Ted Hopp; 06.06.2011
comment
@Ted Hopp: Если я нажму «Добавить библиотеку», я получу список опций, таких как Andriod Classpath Container, определение драйвера подключения и т. Д. для меня .. Это правильное решение или есть другой лучший подход ?? Потому что я должен вручную настроить это и сослаться на банки, которые находятся в проекте библиотеки, на мой исходный проект. Я получил его подход по этой ссылке stackoverflow.com/questions/5790370/ - person Senthil; 07.06.2011
comment
@Senthil - я думаю, что это хорошее решение. - person Ted Hopp; 07.06.2011

Если вы используете ant, вы должны добавить все свои внешние банки в следующий каталог «libs», а также добавить следующую строку в новый файл: ant.properties: jar.libs.dir=libs

person leandroid    schedule 16.06.2012

Если вы получаете VerifyError после создания версии вашего приложения с помощью ProGuard, это может быть связано с проблемой оптимизации. Обратитесь к документации, в которой по существу предлагается отключить оптимизацию с помощью -dontoptimize.

person Paul Lammertsma    schedule 13.11.2012

Удаление всех файлов jar из папки / libs, а затем их повторное добавление с последующей очисткой проекта и его исправлением для меня.

person TheMan    schedule 06.06.2013

Та же ошибка возникла у меня, когда я пытался поймать исключение SQLDataException на устройстве API v.8, поскольку соответствующий класс не включен в API v.8 (ошибка не возникала в устройствах v.14, где этот класс включены). На самом деле SQLDataException.class отсутствует только в android.jar API v.8, хотя он включен в API v.14. Поэтому я заменил исключение SQLDataException на исключение SQLException (чье SQLDataException является подклассом), и теперь мое приложение отлично работает на обоих устройствах API.

person user2270629    schedule 11.10.2013