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

Android应用程序中的java.lang.VerifyError,android,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 an

您好,每次尝试打开活动时都会出现此错误

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)
有人能告诉我一个解决方案或方法来检查问题的来源吗
谢谢

A
VerifyError
表示您编译的字节码引用了Android无法找到的内容。在本例中,您似乎引用了Android找不到的
com.karriapps.smartsiddur.Saharit
类。

正如Commonware提到的,VerifyError表示您试图引用Dalvik无法加载的类

这门课可能不见了

也有可能是您试图对API级别大于设备上的API级别使用框架方法,因此该类被视为无效而拒绝

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


您可能还想查看收到的堆栈跟踪上方/下方的行,以查看是否有来自验证器的任何其他信息指示验证失败的原因。

我今天遇到了这个问题,正如Commonware提到的,问题是我编译的字节码引用的是不再存在的内容。但是你该怎么办呢


因为我使用的是EclipseSDK,所以对我来说,简单的解决方案是执行Eclipse的项目→ 清除以删除项目中导致问题的预编译字节码。项目clean put只允许eclipse在清理之后对我的项目执行全新的重建。

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

<uses-sdk
   android:minSdkVersion="9"
   android:targetSdkVersion="18" />
好的,我可以管理它,所以运行时不会执行它,只是:

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
}

NetworkOnMainThreadException
未在Android 2.3中实现,因此加载类时会发生异常
java.lang.VerifyError

但它在我的设备上运行良好(Android 2.3.5)它只是在Android 2.1和2中显示了这条消息。2@oreizion:那么您可能指的是Android中的某个类或方法,它来自
com.karriapps.smartsiddur.Saharit
,在API级别7或8上不存在,但仅在API级别9+上存在。你可以暂时将构建目标降低到API级别7,看看这是否告诉你哪里出了问题;在将构建目标更改为API 15后,我没有意识到我还必须在AndroidManifest.xml中设置它。谢谢!我调用了一个api级别10不支持的异常,因此更改目标会显示dalvik错误。非常感谢!
} catch (NetworkOnMainThreadException nomte) {
   // log this exception
} catch (SocketTimeoutException socketTimeoutException) {
   // log this exception
}