Android pre-2.0中的JTwitter VerifyError

时间:2010-11-29 17:19:30

标签: android jtwitter

我正在尝试将JTwitter集成到Android应用程序中,直到我决定对较旧的Android版本进行回归测试,我才完全成功。在Android 2.x中,我的代码运行良好,但在Android 1.5 / 1.6中,Dalvik在以下行引发了VerifyError:

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)

我想弄清楚Android版本之间的底层实现可能会有什么变化,这会影响到这个以及解决方法可能是什么? A similar question被回答了一段时间,但答案是以现在已经死亡的方式链接到论坛帖子。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

在Android 2.0之前,验证者会在出现问题时立即拒绝课程。在2.0及更高版本中,某些故障的报告将推迟到代码实际执行之前。尝试调用不存在或不可访问的方法就是这种情况。

这是验证者行为发生变化的原因示例。即使你没有调用缺席功能,整个试图称之为拒绝功能的班级也会被拒绝。

可以找到一些解决方法here,但听起来你已经找到了一个。