Я использую Gradle в своем приложении для Android, и я хотел бы использовать зависимость библиотеки JScience. Я добавил библиотеку следующим образом:
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
compile 'org.jscience:jscience:4.3.1'
testCompile group: 'junit', name: 'junit', version: '4.11'
}
Но во время компиляции получаю ошибку:
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)
Это вызвано дублированием javax.realtime
пакетов в проекте, один из которых является частью JDK, а второй находится в библиотеке Jscience. Я попытался удалить этот пакет из библиотеки Jscience таким образом в Gradle:
sourceSets {
main {
java {
exclude 'javax/realtime/**'
}
}
}
configurations {
all*.exclude group: 'javax.realtime'
}
Но это не помогло. Итак, этот пакет все еще существует в зависимостях.
Есть ли способ исключить пакет из jar во время компиляции?
javax.realtime
. Тот факт, что библиотека классов JDK имеетjavax.realtime
, не имеет смысла, поскольку вы не используете библиотеку классов JDK при компиляции приложения для Android. - person CommonsWare   schedule 24.05.2014javax.realtime
. - person Yuriy Yunikov   schedule 24.05.2014