GreenRobot EventBus,ClassNotFoundException 在使用 Subscriber Index 后仍然存在
GreenRobot EventBus, ClassNotFoundException still there after using Subscriber Index
我有一个普通的 "ClassNotFoundException" issue EventBus 和一个 4.4.2 设备,
它甚至在 FAQ
中出现问题
我首先仔细检查我没有使用任何未使用的生命周期方法,但我没有。然后我更新到 EventBus 3.0.0,并使用 "suscribers index"。但是错误仍然存在,我仍然可以在我的堆栈跟踪中看到构建器正在尝试使用自反性 (findUsingReflectionInSingleClass
):
Caused by: java.lang.ClassNotFoundException: Didn't find class "android.os.PersistableBundle" on path: DexPathList[[zip file "/data/app/com.m360.android.debug-6.apk"],nativeLibraryDirectories=[/data/app-lib/com.m360.android.debug-6, /vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
at java.lang.Class.getDeclaredMethods(Native Method)
at java.lang.Class.getPublicMethodsRecursive(Class.java:894)
at java.lang.Class.getMethods(Class.java:877)
at org.greenrobot.eventbus.SubscriberMethodFinder.findUsingReflectionInSingleClass(SubscriberMethodFinder.java:157)
at org.greenrobot.eventbus.SubscriberMethodFinder.findUsingInfo(SubscriberMethodFinder.java:88)
at org.greenrobot.eventbus.SubscriberMethodFinder.findSubscriberMethods(SubscriberMethodFinder.java:64)
at org.greenrobot.eventbus.EventBus.register(EventBus.java:136)
at com.m360.android.activity.PlayerActivity.onStart(PlayerActivity.java:977)
at ...
在Player Activity
中:
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEvent(QuestionFragment.EnableNextEvent event) {
/* ...... */
}
@Override
protected void onStart() {
super.onStart();
EventBus.builder().addIndex(new MyEventBusIndex()).build().register(this);
}
@Override
protected void onStop() {
super.onStop();
EventBus.getDefault().unregister(this);
}
还有 MyEventBusIndex
可用,所以我想我的构建文件没问题。
如果您发现问题所在,请告诉我。
我在 Galaxy s3 (android 4.3) 上遇到了同样的错误。它发生在 Android 上,其中 API 级别低于 21,并且您可以直接引用 PersistableBundle。
"EventBus 3 with a subscriber index" 对我没有帮助(对你也是如此)。
所以我找到了解决方法 。
error/cause 的更多部分是 。
P.S。事件总线 3.0.0
我有一个普通的 "ClassNotFoundException" issue EventBus 和一个 4.4.2 设备, 它甚至在 FAQ
中出现问题我首先仔细检查我没有使用任何未使用的生命周期方法,但我没有。然后我更新到 EventBus 3.0.0,并使用 "suscribers index"。但是错误仍然存在,我仍然可以在我的堆栈跟踪中看到构建器正在尝试使用自反性 (findUsingReflectionInSingleClass
):
Caused by: java.lang.ClassNotFoundException: Didn't find class "android.os.PersistableBundle" on path: DexPathList[[zip file "/data/app/com.m360.android.debug-6.apk"],nativeLibraryDirectories=[/data/app-lib/com.m360.android.debug-6, /vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
at java.lang.Class.getDeclaredMethods(Native Method)
at java.lang.Class.getPublicMethodsRecursive(Class.java:894)
at java.lang.Class.getMethods(Class.java:877)
at org.greenrobot.eventbus.SubscriberMethodFinder.findUsingReflectionInSingleClass(SubscriberMethodFinder.java:157)
at org.greenrobot.eventbus.SubscriberMethodFinder.findUsingInfo(SubscriberMethodFinder.java:88)
at org.greenrobot.eventbus.SubscriberMethodFinder.findSubscriberMethods(SubscriberMethodFinder.java:64)
at org.greenrobot.eventbus.EventBus.register(EventBus.java:136)
at com.m360.android.activity.PlayerActivity.onStart(PlayerActivity.java:977)
at ...
在Player Activity
中:
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEvent(QuestionFragment.EnableNextEvent event) {
/* ...... */
}
@Override
protected void onStart() {
super.onStart();
EventBus.builder().addIndex(new MyEventBusIndex()).build().register(this);
}
@Override
protected void onStop() {
super.onStop();
EventBus.getDefault().unregister(this);
}
还有 MyEventBusIndex
可用,所以我想我的构建文件没问题。
如果您发现问题所在,请告诉我。
我在 Galaxy s3 (android 4.3) 上遇到了同样的错误。它发生在 Android 上,其中 API 级别低于 21,并且您可以直接引用 PersistableBundle。
"EventBus 3 with a subscriber index" 对我没有帮助(对你也是如此)。
所以我找到了解决方法
error/cause 的更多部分是
P.S。事件总线 3.0.0