J’utilise Gradle dans mon application Android et j’aimerais utiliser la dépendance à la bibliothèque JScience. J’ai ajouté la bibliothèque de cette façon:
dependencies { comstack fileTree(dir: 'libs', include: '*.jar') comstack 'org.jscience:jscience:4.3.1' testComstack group: 'junit', name: 'junit', version: '4.11' }
Mais au moment de la compilation, j’obtiens l’erreur:
UNEXPECTED TOP-LEVEL EXCEPTION: com.android.dex.DexException: Multiple dex files define Ljavax/realtime/MemoryArea; at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:594) at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:552) at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:533) at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:170) at com.android.dx.merge.DexMerger.merge(DexMerger.java:188) at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:439) at com.android.dx.command.dexer.Main.runMonoDex(Main.java:287) at com.android.dx.command.dexer.Main.run(Main.java:230) at com.android.dx.command.dexer.Main.main(Main.java:199) at com.android.dx.command.Main.main(Main.java:103)
Cela est dû à la duplication des packages javax.realtime
dans le projet, l’un faisant partie de JDK et le second dans la bibliothèque Jscience. J’ai essayé de supprimer ce paquet de la bibliothèque Jscience de cette façon dans Gradle:
sourceSets { main { java { exclude 'javax/realtime/**' } } } configurations { all*.exclude group: 'javax.realtime' }
Mais ça n’a pas aidé. Donc, ce paquet existe toujours dans les dépendances.
Existe-t-il un moyen d’exclure un paquet du fichier jar lors de la compilation?
Au cas où quelqu’un en aurait besoin, le problème Javolution
dépendance à la JScience
bibliothèque JScience
. Ils ont tous deux un paquet javax.runtime
. Javolution
la Javolution
a résolu le problème pour moi.
comstack ('org.jscience:jscience:4.3.1') { exclude group: 'org.javolution', module: 'javolution' }