Android应用程序中的java.lang.VerifyError

时间:2011-10-03 21:03:29

标签: android

您好我每次尝试开设活动时都会收到此错误

java.lang.VerifyError: com.karriapps.smartsiddur.Saharit
at java.lang.Class.newInstanceImpl(Native Method)
at java.lang.Class.newInstance(Class.java:1429)
at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
at android.app.ActivityThread.access$2300(ActivityThread.java:125)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4627)
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:860)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
at dalvik.system.NativeStart.main(Native Method)

有人可以指导我找一个解决方案或方法来检查问题的来源 感谢

4 个答案:

答案 0 :(得分:6)

VerifyError表示您编译的字节码指的是Android无法找到的内容。在这种情况下,您似乎可以引用Android无法找到的com.karriapps.smartsiddur.Saharit类。

答案 1 :(得分:3)

正如CommonsWare所提到的,VerifyError意味着您正在尝试引用Dalvik无法加载的类。

这个课程可能缺失。

您也可能尝试使用框架方法获得的API级别大于设备上的API级别,因此该类被拒绝为无效。

尝试将编译器的构建级别设置为API级别7,这与Android 2.1相对应。 (不要忘记将AndroidManfest.xml的targetSdkVersion设置为“7”。)这将导致任何不存在的框架调用引发编译器错误。

您还可能需要查看收到的堆栈跟踪上方/下方的行,以查看验证程序是否有任何其他信息表明验证失败的原因。

答案 2 :(得分:1)

我发现了一个有趣的案例,在运行时有证据。我用:

<uses-sdk
   android:minSdkVersion="9"
   android:targetSdkVersion="18" />

因此,Android 2.3中的一些新Android 4功能并没有像这样实现:

imageView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

好的我可以管理它,因此运行时不会执行它,只需:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
   setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}

这很好但是异常处理呢?

} catch (NetworkOnMainThreadException nomte) {
   // log this exception
} catch (SocketTimeoutException socketTimeoutException) {
   // log this exception
}
Android 2.3中未实现

NetworkOnMainThreadException,因此当加载时,会发生异常java.lang.VerifyError

答案 3 :(得分:0)

我今天遇到了这个问题,正如CommonsWare所提到的,问题是我编译的字节码指的是不再存在的东西。但是你应该怎么做呢?

由于我使用Eclipse SDK,对我来说简单的解决方案是执行Eclipse的Project→Clean以删除导致问题的项目中的预编译字节代码。 Project clean put简单地允许eclipse在清理后对我的项目进行全新的重建。