【发布时间】:2026-01-04 23:35:01
【问题描述】:
我正在通过以下方式创建一个线程:
GraphThread thread = new GraphThread(context, handler, string);
请注意,处理程序是一个静态处理程序对象,这可能会导致问题。我一直在这行代码中遇到错误。但是,在 API 23 和 25 等其他虚拟设备以及我的物理设备(牛轧糖)中没有出现该错误。
我确实尝试设置一个 try{}catch 块,但它没有捕获异常,这很不寻常。堆栈跟踪如下:
java.lang.IllegalStateException: Could not execute method for android:onClick
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:389)
at android.view.View.performClick(View.java:4438)
at android.view.View$PerformClick.run(View.java:18422)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.reflect.InvocationTargetException**
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick**(AppCompatViewInflater.java:384)
at android.view.View.performClick(View.java:4438)
at android.view.View$PerformClick.run(View.java:18422)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.VerifyError: noodlesoup/solver/GraphThready
at noodlesoup.solver.MainActivity.clikButton(MainActivity.java:4985)
归结为 java.lang Verifyerror 我相信是通过传递参数静态处理程序创建的。我不知道为什么会在 API 19 虚拟设备中发生这种情况,而不是在我测试过的其他虚拟设备中。
有什么想法或建议吗?
【问题讨论】:
-
是你的应用程序的noodlesoup/solver/GraphThready包的一部分还是它的依赖?您能否将调用的方法发布到您的 MainActivity(clikButton)
-
是我的应用程序中的一个线程类。不是,依赖。但是,我使用了几个库来在这个线程中创建图表。 @AnisBENNSIR
-
所以,如果编译版本与运行时版本不同,基本上会抛出 VerifyError,这可能是由于某些 gradle 排除传递依赖...或损坏的 jar/aar 依赖...请添加你的毕业典礼?
-
如果甚至没有创建 Thread 对象,为什么它与传递依赖有关。甚至没有调用构造函数。创建线程对象后,代码开始调用 3rd 方库进行计算。 @AnisBENNSIR
-
好的,你的线程类依赖于库中的其他类,类加载器也可能加载它们...你可以尝试使用外部库注释代码并检查问题是否是由于外部依赖与否,如果是,可以逐个开启依赖,找到这个错误的来源...
标签: android invocationtargetexception verifyerror