您好我每次尝试开设活动时都会收到此错误
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)
有人可以指导我找一个解决方案或方法来检查问题的来源 感谢
答案 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在清理后对我的项目进行全新的重建。