Skip to content

NoClassDefFoundError at DeserializationContext.<init> on Android 4.1.2 and Jackson 2.10.0 #2599

@johnjohndoe

Description

@johnjohndoe

I discovered a NoClassDefFoundError: java.util.Objects when I run this Android app in the following environment:

  • Android emulator, Nexus 5X, Intel x86 Atom, system-images;android-16;google_apis;x86, revision: 6
  • Android 4.1.2 (API level 16, Jelly Bean),
  • no Google Play Services installed
  • com.fasterxml.jackson.core:jackson-databind:2.10.0 - 2.10.2
  • crash happens for DEBUG and RELEASE builds

Here is the excerpt which causes the crash. The full source code can be found here (commit: db1173da74c2b7c1e296a612af88faf9bb281dc4) where I raised the version of jackson-databind from v.2.9.9 to v.2.10.2:

116 ObjectMapper objectMapper = new ObjectMapper(); // <-- crash

The following stacktrace is generated when I open the ZonesFragment from the toolbar menu:

java.lang.NoClassDefFoundError: java.util.Objects
    at com.fasterxml.jackson.databind.DeserializationContext.<init>(DeserializationContext.java:158)
    at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.<init>(DefaultDeserializationContext.java:44)
    at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext$Impl.<init>(DefaultDeserializationContext.java:318)
    at com.fasterxml.jackson.databind.ObjectMapper.<init>(ObjectMapper.java:628)
    at com.fasterxml.jackson.databind.ObjectMapper.<init>(ObjectMapper.java:531)
    at de.avpptr.umweltzone.utils.ContentProvider.getContent(ContentProvider.java:116)
    at de.avpptr.umweltzone.utils.ContentProvider.getContent(ContentProvider.java:101)
    at de.avpptr.umweltzone.utils.ContentProvider.getAdministrativeZones(ContentProvider.java:76)
    at de.avpptr.umweltzone.zones.ZonesFragment.onActivityCreated(ZonesFragment.kt:41)
    ....

I also checked if the crash disappears when I use the new builder pattern:

117 ObjectMapper objectMapper = JsonMapper.builder() // <-- crash
118         .addModule(module)
119         .defaultDateFormat(DateFormats.getDateFormat(datePattern))
120         .build();

The same error occurs. Here is the associated stacktrace:

java.lang.NoClassDefFoundError: java.util.Objects
    at com.fasterxml.jackson.databind.DeserializationContext.<init>(DeserializationContext.java:158)
    at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.<init>(DefaultDeserializationContext.java:44)
    at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext$Impl.<init>(DefaultDeserializationContext.java:318)
    at com.fasterxml.jackson.databind.ObjectMapper.<init>(ObjectMapper.java:628)
    at com.fasterxml.jackson.databind.ObjectMapper.<init>(ObjectMapper.java:540)
    at com.fasterxml.jackson.databind.json.JsonMapper.<init>(JsonMapper.java:93)
    at com.fasterxml.jackson.databind.json.JsonMapper.<init>(JsonMapper.java:89)
    at com.fasterxml.jackson.databind.json.JsonMapper.builder(JsonMapper.java:114)
    at de.avpptr.umweltzone.utils.ContentProvider.getContent(ContentProvider.java:117)
    at de.avpptr.umweltzone.utils.ContentProvider.getContent(ContentProvider.java:101)
    at de.avpptr.umweltzone.utils.ContentProvider.getAdministrativeZones(ContentProvider.java:76)
    at de.avpptr.umweltzone.zones.ZonesFragment.onActivityCreated(ZonesFragment.kt:41)

Findings

  • The crash does not occur when I use jackson-databind:2.9.9.
  • The crash does not occur when I run the app on an Android emulator, Nexus 5, Android 4.4.2 (API level 19, KitKat), Intel x86 Atom, system-images;android-19;google_apis;x86, revision: 38.
  • The crash does also occur when I run the app on an Android emulator, Nexus 5, Android 4.3.1 (API level 18, Jelly Bean), Intel x86 Atom, system-images;android-18;google_apis;x86, revision: 6.

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    androidIssues related to use on Android platform

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions