Używam Gradle w mojej aplikacji Android i chciałbym użyć zależności biblioteki JScience. Dodałem biblioteki w ten sposób:Gradle: Jak wykluczyć pakiet javax.realtime z zależności JScience jar (wiele dex define)
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
compile 'org.jscience:jscience:4.3.1'
testCompile group: 'junit', name: 'junit', version: '4.11'
}
Ale w czasie kompilacji pojawia się błąd:
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)
Spowodowane jest to z powodu powielania javax.realtime
pakietów w projekcie, jeden jest częścią JDK, a drugi znajduje się w bibliotece Jscience. Próbowałem usunąć ten pakiet z biblioteki Jscience w ten sposób w Gradle:
sourceSets {
main {
java {
exclude 'javax/realtime/**'
}
}
}
configurations {
all*.exclude group: 'javax.realtime'
}
Ale to nie pomogło. Tak więc ten pakiet nadal istnieje w zależnościach.
Czy istnieje sposób, w jaki sposób mogę wyłączyć pakiet z słoika podczas kompilacji?
"jeden jest częścią Java" - nie ma "javax.realtime" w systemie Android. Fakt, że biblioteka klas JDK ma 'javax.realtime' jest bez znaczenia, ponieważ nie używasz biblioteki klasy JDK podczas kompilowania aplikacji dla systemu Android. – CommonsWare
Dzięki za odpowiedź, jesteś w 100% poprawny, mój błąd. Problem polegał na javolution (która pochodzi z biblioteki JScience), ponieważ zawiera pakiet 'javax.realtime'. –