2016-10-15 2 views
0

Я видел похожие ответы на вопрос ниже. Извините, но я не смог исправить это, попробовав несколько вещей, поэтому я прошу его снова. Всякий раз, когда я пытаюсь создать свое приложение, конструкция gradle вызывает мне следующую ошибку: ... из-за дублирования записи класса javax/Inject. Это произошло, только когда я пытаюсь положить compile 'org.glassfish.jersey.containers:jersey-container-jdk-http:2.9' в мой build.gradle файл; Этот пакет необходим для услуг javax.ws.rs.*.java.util.zip.ZipException: дублировать запись: javax/inject/Inject.class

Я попытался запустить команду 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' 
} 

Ниже мой 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

Duplicate. Посмотрите на ответ здесь. См. «Edit» в ответе. Попробуйте, и это должно исправить. http://stackoverflow.com/questions/39957924/java-util-zip-zipexception-duplicate-entry?answertab=active#tab-top –

+0

Я использовал приложение gradlew: зависимости, чтобы выяснить, существует ли такая зависимость, i просто не получил никаких зависимостей для всех, кроме ниже: + --- org.glassfish.hk2: hk2-api: 2.3.0-b05 | | | + --- javax.inject: javax.inject: 1 | | | + --- org.glassfish.hk2: hk2-utils: 2.3.0-b05 | | | | \ --- javax.inject: javax.inject: 1 –

+0

Можете ли вы объяснить это, пожалуйста, как исправить это, поскольку это невозможно устранить. –

ответ

0

Ok поэтому я создал образец проект со всеми этими зависимостями, и я получил другую ошибку.

Итак, если вы все еще получаете ошибку ZipException, у вас есть несколько банок в вашей папке lib, о которых мы не знаем?

Вот ошибка я получил:

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:

android { 
    defaultConfig { 
     ... 
    } 

    buildTypes { 
     .... 
    } 

    packagingOptions { 
     exclude 'META-INF/LICENSE' 
    } 
} 

Если это не В любом случае, есть ли в вашем проекте библиотеки jar? Если это так, нам нужно увидеть список.

EDIT:

Я не могу знать наверняка, если он будет работать, потому что я не получаю ту же ошибку. В своих зависимостей, изменить это:

compile ('org.glassfish.jersey.containers:jersey-container-jdk-http:2.9') { 
    exclude group: 'javax.inject', module: 'javax.inject' 
} 
+0

Пакет jar отсутствует в папке lib. выше не помогает –

+0

Это очень странно. Я не могу воспроизвести ошибку в тех же библиотеках, что и в версии сборки и компиляции. –

+0

Вы знаете какой-либо другой способ его исправить? –

0

Эта ошибка означает, что класс javax.inject.Inject в настоящее время в два раза включены в APK при запуске dexer. То есть, этот тот же самый класс исходит из двух разных зависимостей. Один из них, вероятно, org.glassfish.jersey.containers:jersey-container-jdk-http:2.9, потому что это происходит после того, как вы его добавили. Если вы используете CMD + O (переход к классу) в Android Studio, вы сможете увидеть 2 версии этого класса и посмотреть, откуда они. Убедитесь, что вы выбрали флажок, который позволяет показывать классы, включенные в ваши зависимости. Как только вы откроете их, наведите указатель мыши на вкладку файла, и вы увидите всплывающую подсказку с именем артефакта. Это будет зависимость, которая включает этот класс. Надеюсь, что это имеет смысл.

+0

Могли ли вы решить эту проблему? Не могли бы вы посмотреть на этот вопрос (http://stackoverflow.com/questions/43277745/error-while-compiling-react-native-duplicate-entry-javax-inject-inject-class)? –

Смежные вопросы