我在Eclipse中运行一个程序,涉及进行一些数学和数据库输入。有一点似乎太过分了,因为Eclipse给了我一个VerifyError。当我删除一点它运行正常,无论我删除什么,所以它不是一个特定的部分导致错误,但它的长度,似乎。这是错误消息:
10-27 17:04:03.855: W/dalvikvm(12618): VFY: warning: method is huge (regs=643 insnsSize=7090)
10-27 17:04:03.855: W/dalvikvm(12618): VFY: rejected Lcom/example/simpledatabasetutorial/DatabaseManageActivity;.onClick (Landroid/view/View;)V
10-27 17:04:04.114: W/dalvikvm(12618): VFY: register2 v12-13 values 0,0
10-27 17:04:04.114: W/dalvikvm(12618): VFY: rejecting opcode 0xab at 0x10f2
10-27 17:04:04.114: W/dalvikvm(12618): VFY: rejected Lcom/example/simpledatabasetutorial/DatabaseManageActivity;.onClick (Landroid/view/View;)V
10-27 17:04:04.114: W/dalvikvm(12618): Verifier rejected class Lcom/example/simpledatabasetutorial/DatabaseManageActivity;
10-27 17:04:04.114: W/dalvikvm(12618): Class init failed in newInstance call (Lcom/example/simpledatabasetutorial/DatabaseManageActivity;)
10-27 17:04:04.114: D/AndroidRuntime(12618): Shutting down VM
10-27 17:04:04.114: W/dalvikvm(12618): threadid=1: thread exiting with uncaught exception (group=0x40015560)
10-27 17:04:04.145: E/AndroidRuntime(12618): FATAL EXCEPTION: main
10-27 17:04:04.145: E/AndroidRuntime(12618): java.lang.VerifyError: com.example.simpledatabasetutorial.DatabaseManageActivity
快速解决方案的任何想法?也许这远远不够信息,如果是这种情况只是让我知道,我将包括有关的内容。
答案 0 :(得分:1)
问题实际上并不是你的方法太大了。对于姜饼,过大的方法不再导致该方法被拒绝。 (刚出现第一条“被拒绝”消息,因为它使用LOG_VFY_METH
宏来报告方法名称。)
真正的问题是第二次投诉register2 v12-13 values 0,0 ... rejecting opcode 0xab
。 0xab是一个“add-double”指令,它接受一个64位参数,这意味着两个32位Dalvik寄存器上的类型应该是“双低”和“双高”。验证者发现他们都是零类型,这是“未知”。
所以要么Dalvik验证程序中存在错误,要么生成的代码中存在错误(可能源自“dx”工具)。您应该在http://b.android.com/上提交报告。