对于我的Android项目,我使用Jackson 2.2.x设置了Gradle,如下所示:
// 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这里使用:
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并启动应用程序的相关部分时,它崩溃了:
gradle installDebug
java.lang.NoClassDefFoundError:com.fasterxml.jackson.databind.ObjectMapper
com.fasterxml.jackson...
com.fasterxml.jackson.core
build.gradle
dependencies
android
Gradle和Android并不总是与依赖项相处得很好。跑步
gradle clean
似乎为我解决了大多数问题。
注意: 如果没有用,您可以执行
dexdump classes.dex | grep 'Class descriptor'
在APK中的classes.dex文件上。这将检查该类是否包含在classes.dex文件中。(有时,如果您要仔细检查发生了什么,这很有用)。
classes.dex