【发布时间】:2015-12-08 14:36:20
【问题描述】:
这个“HelloWorld”将两个数字相加并打印出答案
.class public LHelloWorld;
.super Ljava/lang/Object;
.method public static main([Ljava/lang/String;)V
.registers 5
.parameter
.prologue
const v0, 0x2
const v1, 0x4
add-int/2addr v0, v1
new-instance v3, Ljava/lang/StringBuilder;
invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
const-string v3, "The result is : "
sget-object v2, Ljava/lang/System;->out:Ljava/io/PrintStream;
invoke-virtual {v2, v3}, Ljava/lang/PrintStream;->print(Ljava/lang/String;)V
invoke-virtual {v2, v0}, Ljava/lang/PrintStream;->println(Ljava/lang/Integer;)V
return-void
.end method
当我在我的 Android 设备上运行 classes.dex 时,adb shell 会给我一个错误信息
Unable to find static main(String[]) in 'HelloWorld'
java.lang.VerifyError: Verifier rejected class HelloWorld due to bad method void HelloWorld.main(java.lang.String[]) (declaration of 'HelloW
orld' appears in /storage/extSdCard/HelloWorld.zip)
我真的不明白为什么会出现错误。
请帮忙,谢谢。
【问题讨论】:
-
当它运行 dexopt 或 dex2oat 时,您要查找更早出现的 art/dalvik 验证日志。这些将指出特定的指令,即验证失败,并给出一些关于失败原因的指示。
-
@JesusFreke 我怎样才能得到你所说的那个日志?请您详细解释一下,谢谢。
-
日志应该在 logcat 中。 “亚行日志猫”
-
@JesusFreke 谢谢!????