NoClassDefFoundError с помощью Jackson 2.2.x на Android с Gradle

Для моего Android-проекта я настроил Gradle с помощью Jackson 2.2.x следующим образом:

// build.gradle buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.6.+' } } apply plugin: 'android' repositories { mavenCentral() } android { compileSdkVersion 18 buildToolsVersion "18.1.0" defaultConfig { minSdkVersion 8 targetSdkVersion 18 } } dependencies { compile 'com.android.support:appcompat-v7:18.0.0' compile 'com.android.support:support-v4:18.0.0' compile 'com.google.android.gms:play-services:3.1.36' compile 'com.fasterxml.jackson.core:jackson-databind:2.2.+' compile 'com.fasterxml.jackson.core:jackson-core:2.2.+' compile 'com.fasterxml.jackson.core:jackson-annotations:2.2.+' } 

Я просто использую ObjectMapper здесь:

 import com.fasterxml.jackson.databind.ObjectMapper; // ... ObjectMapper objectMapper = new ObjectMapper(); try { Content content = objectMapper.readValue(inputStream, Content.class); } catch (IOException e) { e.printStackTrace(); } 

Когда я запускаю gradle installDebug и запускаю соответствующую часть приложения, он сбой:

Java.lang.NoClassDefFoundError: com.fasterxml.jackson.databind.ObjectMapper


Мысли:

  • Я заметил, что в сообщении об ошибке com.fasterxml.jackson... упоминается, когда com.fasterxml.jackson.core определен в build.gradle . Существует ли несоответствие, вызывающее проблему?
  • Я временно переместил блок dependencies блок android так как я нашел другие конфигурации build.gradle структурированные таким образом. Однако, похоже, это не имеет никакого значения.

Solutions Collecting From Web of "NoClassDefFoundError с помощью Jackson 2.2.x на Android с Gradle"

Gradle и Android не всегда хорошо сочетаются с зависимостями (пока). Бег

  gradle clean 

Кажется, устраняет большинство проблем для меня.

Примечание. Если это не сработало, вы можете запустить

 dexdump classes.dex | grep 'Class descriptor' 

В файле classes.dex в APK. Это проверит, будет ли класс включен в файл classes.dex . (Иногда это полезно, если вы хотите дважды проверить, что происходит).

Gradle

 apply plugin: 'com.android.application' android { compileSdkVersion 22 buildToolsVersion "22.0.1" defaultConfig { applicationId "com.app.test" minSdkVersion 9 targetSdkVersion 22 versionCode 4 versionName "1.3" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } packagingOptions { exclude 'META-INF/DEPENDENCIES' exclude 'META-INF/NOTICE' exclude 'META-INF/LICENSE' } } dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') compile 'com.android.support:appcompat-v7:22.2.0' `enter code here` compile 'com.fasterxml.jackson.core:jackson-databind :2.5.3' } 

Добавьте разрешение и зависимость в вас Gradle, а затем постройте град, вы получите класс обертки объекта