当我尝试运行Android程序时出现此错误。
错误:任务':app:transformClassesWithPreJackPackagedLibrariesForDebug'执行失败。 java.lang.AssertionError:java.util.zip.ZipException:重复条目:jayce / org / hamcrest / BaseDescription.jayce
这是我的build.gradle
android {
compileSdkVersion 25
buildToolsVersion "25.0.3"
defaultConfig {
applicationId "com.surgical.decision"
minSdkVersion 15
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
jackOptions {
enabled true
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
compile files('libs/simple-xml-2.7.1.jar')
compile files('libs/log4j-1.2.17.jar')
compile files('libs/pddl4j-3.5.0.jar')
}
我必须启用jackOptions,因为我在Java 8中编写了很多函数。
答案 0 :(得分:0)
我遇到了同样的问题。我相信com.android.support.test.espresso:espresso-core:2.2.2
是用hamcrest编译的,我认为com.android.support:appcompat-v7:25.3.1
也是用hamcrest编译的。我相信错误消息告诉你hamcrest包至少包含在两个已编译的jar中,它无法解决重复的问题(即使它们是相同的版本)。由于杰克的技术性,它可能无法解决重复问题。要解决这个问题,您只需将其从一个或另一个中排除:
即
`androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
exclude group: 'org.hamcrest', module: 'hamcrest-core'
})
或者如果你没有真正使用espresso-core,只需删除androidTestCompile一行。
在我的情况下,我还必须添加:
exclude group: 'junit', module: 'junit'
因为包含两个不同的junit版本冲突导致我的错误略有不同。
调试这类错误的最佳方法是使用命令行中的gradle。
gradlew app:androidDependencies