Sto utilizzando Gradle nella mia applicazione Android e vorrei utilizzare la dipendenza della libreria JScience. Ho aggiunto la biblioteca in questo modo:Gradle: Come escludere il pacchetto javax.realtime dalla dipendenza di JScience jar (definizione dex multipli)
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
compile 'org.jscience:jscience:4.3.1'
testCompile group: 'junit', name: 'junit', version: '4.11'
}
Ma nel momento della compilazione ottengo l'errore:
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)
Questo è causato a causa di duplicare javax.realtime
pacchetti in progetto, uno è una parte di JDK, e il secondo è nella libreria di Jscience. Ho provato a rimuovere questo pacchetto dalla libreria Jscience in questo modo in Gradle:
sourceSets {
main {
java {
exclude 'javax/realtime/**'
}
}
}
configurations {
all*.exclude group: 'javax.realtime'
}
Ma questo non ha aiutato. Quindi, quel pacchetto è ancora esistente nelle dipendenze.
Esiste un modo per escludere un pacchetto da jar in fase di compilazione?
"uno è una parte di Java" - non c'è 'javax.realtime' in Android. Il fatto che la libreria di classi di un JDK abbia 'javax.realtime' è priva di significato, poiché non si sta utilizzando la libreria di classi di JDK durante la compilazione di un'app Android. – CommonsWare
Grazie per la risposta, sei corretto al 100%, errore mio. Il problema era in dipendenza da javolution (che proviene dalla libreria JScience), perché contiene il pacchetto 'javax.realtime'. –