2016-07-05 1 views
2

Salut j'obtiens l'erreur suivante lors de l'exécution de mon projet android:Android: Apache POI en double entrée: org/apache/xmlbeans/xml/flux/erreur Location.class

Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'. 
> com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: org/apache/xmlbeans/xml/stream/Location.class 

J'ai cherché sur cette question sur Internet, differenet type de solutions fourni quelques-uns d'entre eux comme ci-dessous:

1] Enable multidex, (by doing `multiDexEnabled true`), 
2] Remove support library v4 as v7 comes with it, (I am using only v7), 
3] Increase jvm heap size through gradle or through gradle.properties, 
2] Do not use multiple playstore library versions (Which I am not using already) 

Tout ce qui précède a commencé quand j'ajouté dependecy pour Apache POI en gradle comme suit:

dependencies { 
    .... 
    compile group: 'org.apache.poi', name: 'poi-ooxml', version: '3.14' 
} 

Rien de ce qui précède a fonctionné dans mon cas. Pourquoi cela se passe & quelle est la solution fiable.

Répondre

2

Il y a quelques projets disponibles qui tentent de travailler autour d'un certain nombre de problèmes lors de l'utilisation des adresses utiles sur Android.

S'il vous plaît jeter un oeil à l'exemple de projet https://github.com/centic9/poi-on-android/ qui permet de construire un seul fichier jar pour POI sur Android. Il supprime les doublons et corrige également quelques autres problèmes avec des noms de paquets interdits et d'autres.

Un autre projet dans ce domaine est https://github.com/andruhon/android5xlsx, mais il ne prend en charge qu'une ancienne version de POI.

+0

J'ai déjà résolu le bug en utilisant https://github.com/andruhon/android5xlsx projet merci :) – pcj

0

Dans votre Gradle Compile avec le support: multidex et ajouter également dexOptions

android { 
compileSdkVersion 23 
buildToolsVersion "23.0.3" 



defaultConfig { 
    .............. 
    minSdkVersion 19 
    targetSdkVersion 23 
    versionCode 1 
    versionName "1.0" 
    multiDexEnabled true 


} 
dexOptions { 
    //incremental = true; 
    preDexLibraries = false 
    javaMaxHeapSize "4g" 
} 

packagingOptions { 
    exclude 'META-INF/NOTICE.txt' // will not include NOTICE file 
    exclude 'META-INF/LICENSE.txt' // will not include LICENSE file 
} 

buildTypes { 
    release { 
     minifyEnabled false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    } 
} 
} 

dependencies { 
compile fileTree(include: ['*.jar'], dir: 'libs') 
//Your Dependencies 
compile 'com.android.support:multidex:1.0.1' 
} 

dans votre AndroidManifest.xml ajouter ces lignes android: nom

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme" 
    android:name="android.support.multidex.MultiDexApplication" 
    > 

Si vous utiliser la bibliothèque de service de jeu que de remplacer par

compile 'com.google.android.gms:play-services:+' 

au lieu de

compile 'com.google.android.gms:play-services-maps:8.4.0' //or other 
0

Après avoir fait une autre lecture que j'ai découvert il y a des problèmes avec l'utilisation bibliothèque poi android, voir le lien ci-dessous:

https://bz.apache.org/bugzilla/show_bug.cgi?id=59268#c0

projet à https://github.com/andruhon/android5xlsx a réduit les versions de bibliothèque pour les deux poi.jar & poi-ooxml.jar, importer ces derniers dans votre dossier libs & comprennent le code suivant dans votre gradle:

compile fileTree(include: ['*.jar'], dir: 'libs') 

La raison pour laquelle cela fonctionne est le Le gars qui a créé ce projet a exclu le fichier xmlbeans.jar du fichier poi.jar de base avec lequel android build a un problème. Le crédit va au gars andruhon.

Cette solution a fonctionné pour moi donc l'affichage comme réponse