FolioReader / FolioReader-Android

A Java ePub reader and parser framework for Android.
BSD 3-Clause "New" or "Revised" License
2.25k stars 718 forks source link

java.lang.NoClassDefFoundError: android/webkit/JavascriptInterface #258

Closed dumanapp closed 6 years ago

dumanapp commented 6 years ago

I have a problem but I can not figure out why?

You create a issue template. This is good idea. My issue report is below

Issue / Feature java.lang.NoClassDefFoundError: android/webkit/JavascriptInterface FolioReader version - v.0.4.1 FolioReader Stock / Modified - Stock Android SDK - API 16( 4.4.1 Mobile / Tablet / Emulator Info - Genymotion Emulator Samsung S2 Crash / Error java.lang.NoClassDefFoundError: android/webkit/JavascriptInterface

Steps to reproduce / Describe in detail -

08-21 20:30:55.485 1275-1275/com.folioreader.android.sample E/AndroidRuntime: FATAL EXCEPTION: main java.lang.NoClassDefFoundError: android/webkit/JavascriptInterface at java.lang.reflect.Method.getAnnotation(Native Method) at java.lang.reflect.Method.getAnnotation(Method.java:275) at org.greenrobot.eventbus.SubscriberMethodFinder.findUsingReflectionInSingleClass(SubscriberMethodFinder.java:165) 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:140) at com.folioreader.ui.folio.fragment.FolioPageFragment.onCreateView(FolioPageFragment.java:169) at android.support.v4.app.Fragment.performCreateView(Fragment.java:2346) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1428) at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1759) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1827) at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:797) at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2596) at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2383) at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2338) at android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:2215) at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:649) at android.support.v4.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:167) at com.folioreader.view.DirectionalViewpager.populate(DirectionalViewpager.java:1327) at com.folioreader.view.DirectionalViewpager.populate(DirectionalViewpager.java:1105) at com.folioreader.view.DirectionalViewpager.setAdapter(DirectionalViewpager.java:501) at com.folioreader.ui.folio.activity.FolioActivity.configFolio(FolioActivity.java:677) at com.folioreader.ui.folio.activity.FolioActivity.onLoadPublication(FolioActivity.java:630) at com.folioreader.ui.folio.presenter.MainPresenter.onReceivePublication(MainPresenter.java:25) at com.folioreader.ui.base.ManifestTask.onPostExecute(ManifestTask.java:69) at com.folioreader.ui.base.ManifestTask.onPostExecute(ManifestTask.java:26) at android.os.AsyncTask.finish(AsyncTask.java:631) at android.os.AsyncTask.access$600(AsyncTask.java:177) at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4745) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.ClassNotFoundException: android.webkit.JavascriptInterface at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61) at java.lang.ClassLoader.loadClass(ClassLoader.java:501) at java.lang.ClassLoader.loadClass(ClassLoader.java:461) at java.lang.reflect.Method.getAnnotation(Native Method)  at java.lang.reflect.Method.getAnnotation(Method.java:275)  at org.greenrobot.eventbus.SubscriberMethodFinder.findUsingReflectionInSingleClass(SubscriberMethodFinder.java:165)  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:140)  at com.folioreader.ui.folio.fragment.FolioPageFragment.onCreateView(FolioPageFragment.java:169)  at android.support.v4.app.Fragment.performCreateView(Fragment.java:2346)  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1428)  at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1759)  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1827)  at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:797)  at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2596)  at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2383)  at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2338)  at android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:2215)  at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:649)  at android.support.v4.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:167)  at com.folioreader.view.DirectionalViewpager.populate(DirectionalViewpager.java:1327)  at com.folioreader.view.DirectionalViewpager.populate(DirectionalViewpager.java:1105)  at com.folioreader.view.DirectionalViewpager.setAdapter(DirectionalViewpager.java:501)  at com.folioreader.ui.folio.activity.FolioActivity.configFolio(FolioActivity.java:677)  at com.folioreader.ui.folio.activity.FolioActivity.onLoadPublication(FolioActivity.java:630)  at com.folioreader.ui.folio.presenter.MainPresenter.onReceivePublication(MainPresenter.java:25)  at com.folioreader.ui.base.ManifestTask.onPostExecute(ManifestTask.java:69)  at com.folioreader.ui.base.ManifestTask.onPostExecute(ManifestTask.java:26)  at android.os.AsyncTask.finish(AsyncTask.java:631)  at android.os.AsyncTask.access$600(AsyncTask.java:177)  at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)  at android.os.Handler.dispatchMessage(Handler.java:99)  at android.os.Looper.loop(Looper.java:137)  at android.app.ActivityThread.main(ActivityThread.java:4745)  at java.lang.reflect.Method.invokeNative(Native Method)  at java.lang.reflect.Method.invoke(Method.java:511)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)  at dalvik.system.NativeStart.main(Native Method) 

hrishikesh-kadam commented 6 years ago

According to JavaScriptInterface Docs they were added in API 17. JavaScriptInterface doesn't work on some images < API 17 like the one of Genymotion 4.1.1 API 16 . But if you try on API 16 Google APIs System Image then JavaScriptInterface does work.