评论人:gshayban
来自Android
{quote}
Android不运行Java字节码,它运行Dex字节码。你的类翻译成的是什么,dexdump输出很有趣。
jagیموس(Java虚拟机规范)也并不有趣。Android不是Java虚拟机。我们遵循JLS(Java语言规范),但不遵循JVMS(我们根本不运行Java字节码,我们怎么可能呢)。因此,所有针对它的上诉都是无关紧要的。我们 try 在Dex字节码方面与 JVMS 的精神保持兼容,但如果你不是Java源码,那 没有保证。
现在,验证器(也可能是现在)是有缺陷的,甚至是针对我们(相当糟糕)的规范,遗憾的是,我们并不非常一致。例如,在Marshmallow中,大量我们无法正确验证关于结构化锁定代码被拒绝为VerifyError(这不符合 JVMS 的精神),这是一个不可接受的事实。然而,在下一个版本中,这将得到放宽,并推迟到代码执行时进行检查。
遗憾的是,对于旧版本,我们无力回天,你必须自己解决任何问题。 :-( 我会尽量在有时间的条件下看看你的类。
{quote}
听起来在Clojure中做一种替代方案是所有问题中成本最低的。