Search code examples
androidjsonnoclassdeffounderroralgolia

algolia NoClassDefFoundError jayway/jsonpath/Predicate


I'm getting an error recently (it came up this morning has been working fine until now) at runtime when building my project. The error is coming from a library I'm using called Algolia Instant Search, here is the error:

java.lang.NoClassDefFoundError: Failed resolution of: 
[Lcom/jayway/jsonpath/Predicate;     
at com.algolia.instantsearch.utils.
JSONUtils.getObjectFromJSONPath(JSONUtils.java    
at
com.algolia.instantsearch.utils.
JSONUtils.getStringFromJSONPath(JSONUtils.java:    
at
com.algolia.instantsearch.ui.views.
Hits$HitsAdapter.onBindViewHolder(Hits.java:    
at
com.algolia.instantsearch.ui.views.
Hits$HitsAdapter.onBindViewHolder(Hits.java:

etc etc until

04-17 12:27:05.422 20618-20618/com.sealstudios.iconnectonline 
E/AndroidRuntime: Caused by: java.lang.ClassNotFoundException: Didn't find 
class "com.jayway.jsonpath.Predicate" on path: DexPathList[[zip file 
"/data/app/com.sealstudios.iconnectonline-1/base.apk", zip file 
"/data/app/com.sealstudios.iconnectonline-1/split_lib_dependencies_apk.apk", 
zip file "/data/app/com.sealstudios.iconnectonline- 
1/split_lib_slice_0_apk.apk", 
zip file "/data/app/com.sealstudios.iconnectonline- 
1/split_lib_slice_1_apk.apk", 
zip file "/data/app/com.sealstudios.iconnectonline-        
1/split_lib_slice_2_apk.apk", 
zip file "/data/app/com.sealstudios.iconnectonline- 
1/split_lib_slice_3_apk.apk", 
zip file "/data/app/com.sealstudios.iconnectonline- 
1/split_lib_slice_4_apk.apk", 
zip file "/data/app/com.sealstudios.iconnectonline- 
1/split_lib_slice_5_apk.apk", 
zip file "/data/app/com.sealstudios.iconnectonline- 
1/split_lib_slice_6_apk.apk", 
zip file "/data/app/com.sealstudios.iconnectonline- 
1/split_lib_slice_7_apk.apk", 
zip file "/data/app/com.sealstudios.iconnectonline- 
1/split_lib_slice_8_apk.apk", 
zip file "/data/app/com.sealstudios.iconnectonline-
1/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=
[/data/app/com.sealstudios.iconnectonline-1/lib/x86, 
/data/app/com.sealstudios.iconnectonline-1/base.apk!/lib/x86, 
/data/app/com.sealstudios.iconnectonline-
1/split_lib_dependencies_apk.apk!/lib/x86, 
/data/app/com.sealstudios.iconnectonline- 
1/split_lib_slice_0_apk.apk!/lib/x86, 
/data/app/com.sealstudios.iconnectonline- 
1/split_lib_slice_1_apk.apk!/lib/x86, 
/data/app/com.sealstudios.iconnectonline- 
1/split_lib_slice_2_apk.apk!/lib/x86, 
/data/app/com.sealstudios.iconnectonline- 
1/split_lib_slice_3_apk.apk!/lib/x86, 
/data/app/com.sealstudios.iconnectonline- 
1/split_lib_slice_4_apk.apk!/lib/x86, 
/data/app/com.sealstudios.iconnectonline- 
1/split_lib_slice_5_apk.apk!/lib/x86, 
/data/app/com.sealstudios.iconnectonline- 
1/split_lib_slice_6_apk.apk!/lib/x86, 
/data/app/com.sealstudios.iconnectonline- 
1/split_lib_slice_7_apk.apk!/lib/x86, 
/data/app/com.sealstudios.iconnectonline- 
1/split_lib_slice_8_apk.apk!/lib/x86, 
/data/app/com.sealstudios.iconnectonline- 
1/split_lib_slice_9_apk.apk!/lib/x86, 
/system/lib, /vendor/lib]]


at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)

my question is basically, is there anything i can do about this? roll back gradle versions, add a file, and if so how, or do i need to just inform the author and wait for a fix


Solution

  • there was an issue in dependency management that caused transitive dependencies to not be exposed from v1.7.6 to v1.7.23 included.

    The release v1.7.24 fixed the error. Simply update your dependency to

    implementation "com.algolia:instantsearch-android:1.7.24"
    

    and the problem will go away.