我见过类似的回答以下问题。对不起,我无法修复它尝试多种方式,所以我再次问它。
每当我尝试构建我的应用程序时,gradle构建会抛出以下错误,指出...由于重复输入javax / Inject类。
这只发生在我尝试将compile 'org.glassfish.jersey.containers:jersey-container-jdk-http:2.9'
放入build.gradle
文件中时;此包是javax.ws.rs.*
服务所必需的。
我尝试在我的根目录中运行gradlew clean
命令,它说构建成功但是当我再次构建我的应用程序时,它又开始抛出错误。
能否请你帮忙解决以下错误:
*Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'.
> com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: javax/inject/Inject.class*
以下是我的应用程序gradle文件:
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
applicationId "com.usfca.studentrecordsverifycation"
minSdkVersion 17
targetSdkVersion 23
versionCode 1
versionName "1.0"
// Enabling multidex support.
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
repositories {
maven { url 'http://repo1.maven.org/maven2' }
maven { url 'http://maven.restlet.com' }
maven { url 'https://maven.java.net/content/repositories/releases/' }
maven { url 'http://download.java.net/maven/2/' }
maven { url 'http://download.java.net/maven/1' }
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.3.0'
compile 'com.android.support:design:23.3.0'
compile 'com.android.support:multidex:1.0.1'
compile 'log4j:log4j:1.2.17'
compile 'com.google.code.gson:gson:2.2.4'
compile 'com.madgag:sc-light-jdk15on:1.47.0.3'
compile 'com.cloudinary:cloudinary-http44:1.4.5'
compile 'org.glassfish.jersey.containers:jersey-container-jdk-http:2.9'
compile 'commons-lang:commons-lang:2.6'
}
以下是我的Project gradle:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
答案 0 :(得分:1)
好的,所以我创建了一个包含所有这些依赖项的示例项目,我得到了一个不同的错误。
因此,如果您仍然收到refreshTokens
错误,那么您的lib文件夹中有一些我们不知道的jar?
这是我得到的错误:
ZipException
如果您收到类似的错误,您需要做的就是将以下内容添加到Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'.
> com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/LICENSE
:
build.gradle
如果这没有任何区别,你的项目中是否有任何jar库?如果是这样,我们需要看清单。
修改强>
我无法确定它是否会起作用,因为我没有得到同样的错误。在您的依赖项中,请更改为:
android {
defaultConfig {
...
}
buildTypes {
....
}
packagingOptions {
exclude 'META-INF/LICENSE'
}
}
答案 1 :(得分:0)
此错误表示当dexer运行时,类javax.inject.Inject
被包含在apk中两次。也就是说,这个完全相同的类来自2个不同的依赖项。其中一个可能是org.glassfish.jersey.containers:jersey-container-jdk-http:2.9
,因为它是在您添加之后发生的。
如果您在Android Studio上使用CMD + O(跳转到课程),您应该能够看到此课程的2个版本并查看它们的来源。确保选中允许它显示依赖项中包含的类的复选框。打开它们后,将鼠标悬停在文件选项卡上,您将看到带有工件名称的工具提示。这将是包括那个阶级的依赖。
希望它有意义。