2017-05-31 150 views
3

我试图运行我的Android程序时出现此错误。Android:错误:任务应用程序执行失败:transformClassesWithPreJackPackagedLibrariesForDebug

Error:Execution failed for task ':app:transformClassesWithPreJackPackagedLibrariesForDebug'. java.lang.AssertionError: java.util.zip.ZipException: duplicate entry: 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

写道:我有同样的问题。我相信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' 

}) 

,或者如果你不是真的用咖啡核,只是删除androidTestCompile线完全。

在我的情况,我也不得不补充:

exclude group: 'junit', module: 'junit' 

,因为我得到一个稍微不同的错误是由于包括两个不同的JUnit版本冲突。

调试这类错误的最佳方法是使用命令行中的gradle。

  1. 打开命令提示符
  2. 导航到项目目录(它包含gradlew.bat)
  3. gradlew app:androidDependencies

相关问题