Я пытаюсь интегрировать JTwitter в приложение для Android, и я был полностью успешным до того момента, когда решил регрессионный тест на старых версиях Android. В Android 2.x мой код работает, но в Android 1,5/1,6 Dalvik бросает VerifyError на следующей строке:JTwitter VerifyError в Android pre-2.0
OAuthSignpostClient oauthClient
= new OAuthSignpostClient(KEY_TWITTER, SECRET_TWITTER, "oob");
и обеспечивает этот выход LogCat и трассировки стека:
Could not find method javax.swing.JOptionPane.showInputDialog, referenced from method winterwell.jtwitter.OAuthSignpostClient.askUser
VFY: unable to resolve static method 1703: Ljavax/swing/JOptionPane;.showInputDialog (Ljava/lang/Object;)Ljava/lang/String;
VFY: rejecting opcode 0x71 at 0x0000
VFY: rejected Lwinterwell/jtwitter/OAuthSignpostClient;.askUser (Ljava/lang/String;)Ljava/lang/String;
Verifier rejected class Lwinterwell/jtwitter/OAuthSignpostClient;
Shutting down VM
threadid=3: thread exiting with uncaught exception (group=0x4001aa28)
Uncaught handler: thread main exiting due to uncaught exception
java.lang.VerifyError: winterwell.jtwitter.OAuthSignpostClient
at com.wirelessdesigns.android.AuthActivity.onCreate(AuthActivity.java:37)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2364)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2417)
at android.app.ActivityThread.access$2100(ActivityThread.java:116)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4203)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
at dalvik.system.NativeStart.main(Native Method)
I» m пытается выяснить, что могло быть изменено в базовой реализации между версиями Android, которые повлияли бы на это, и каковым может быть обходной путь? A similar question ответил некоторое время назад, но ответ был в форме теперь мертвой ссылки на сообщение в форуме.
Любые мысли?
Очевидно, что OAuthSignpostClient реализован с использованием API, представленного на уровне 5 или выше. Вероятно, вы должны извлечь OAuthSignpostClient.java из jtwitter.jar, чтобы узнать, что именно. Я пытался это сделать сейчас, но мой JDK, похоже, сломан. –
2010-11-29 17:34:42
Можете ли вы опубликовать материал, который появляется в logcat чуть выше исключения? Должно быть несколько строк с «VFY» в них, которые расскажут вам, где проблема (возможно, загадочно). Отметим также, что верификатор работает по-разному в версии 2.0+; pre-2.0 немедленно отклонил классы, если что-то не так, 2.0, а затем он регистрирует предупреждение и вставляет инструкцию «всегда бросать», которая срабатывает при выполнении кода. Дополнительная информация: http://android.git.kernel.org/?p=platform/dalvik.git;a=blob_plain;f=docs/verifier.html;hb=HEAD. – fadden 2010-11-29 23:09:28