2016-10-15 8 views
0

以下の質問と同様の反応があります。申し訳ありませんが、私は複数のものを試してそれを修正することができなかったので、私は再びそれを求めています。 私のアプリケーションをビルドしようとするたびに、gradleのビルドでは、以下のエラーが表示されます... javax/Injectクラスの重複エントリが原因です。 これは、build.gradleファイルにcompile 'org.glassfish.jersey.containers:jersey-container-jdk-http:2.9'を入力しようとしているときにのみ発生しました。このパッケージは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

重複しています。ここで答えを見てください。答えの「編集」を参照してください。それを試してくださいとそれはそれを修正する必要があります。 http://stackoverflow.com/questions/39957924/java-util-zip-zipexception-duplicate-entry?answertab=active#tab-top –

+0

私はgradlew app:dependenciesが存在するかどうかを調べるために依存関係を使用しています。 + --- 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フォルダにいくつかのjarファイルがありますか?

ここで私が得たのエラーです:

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

libフォルダにjarパッケージがありません。上記は役に立ちません –

+0

これは非常に奇妙です。私は同じライブラリで同じエラーを再現することができず、同じビルドとバージョンのコンパイルができません。 –

+0

これを修正する方法は他にもありますか? –

0

このエラーはdexerの実行時クラスjavax.inject.Injectがあなたのapkに二度含まれていることを意味します。つまり、この全く同じクラスは2つの異なる依存関係から来ています。そのうちの1つはおそらくorg.glassfish.jersey.containers:jersey-container-jdk-http:2.9です。追加した後に発生するためです。 AndroidスタジオでCMD + O(クラスにジャンプ)すると、このクラスの2つのバージョンが表示され、それらがどこから来ているのかがわかるはずです。依存関係から含まれるクラスを表示できるようにするチェックボックスを選択してください。それらを開いたら、ファイルタブの上にカーソルを置くと、アーティファクト名のツールチップが表示されます。それはそのクラスを含む依存関係になるでしょう。 うまくいくと思います。

+0

あなたはこの問題を解決できましたか?あなたは[これ](http://stackoverflow.com/questions/43277745/error-while-compiling-react-native-duplicate-entry-javax-inject-inject-class)の質問もご覧いただけますか? –

関連する問題