Ich benutze Gradle in meiner Android Anwendung und möchte die JScience Bibliotheksabhängigkeit verwenden. Ich habe die Bibliothek auf diese Weise hinzugefügt:Gradle: Wie man das javax.realtime Paket aus der JScience jar Abhängigkeit ausschließt (Mehrere dex definieren)
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
compile 'org.jscience:jscience:4.3.1'
testCompile group: 'junit', name: 'junit', version: '4.11'
}
Aber in der Kompilierung erhalte ich die Fehlermeldung:
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)
Dies wegen Duplizieren javax.realtime
Pakete in Projekt verursacht wird, ein Teil des JDK ist, und der zweite ist in der Jscience-Bibliothek. Ich habe versucht, dieses Paket aus Jscience-Bibliothek auf diese Weise in Gradle zu entfernen:
sourceSets {
main {
java {
exclude 'javax/realtime/**'
}
}
}
configurations {
all*.exclude group: 'javax.realtime'
}
Aber das hat nicht geholfen. Also, dieses Paket ist immer noch in Abhängigkeiten vorhanden.
Gibt es eine Möglichkeit, wie kann ich ein Paket von jar auf Kompilierzeit ausschließen?
"man ist ein Teil von Java" - es gibt keine 'javax.realtime' in Android. Die Tatsache, dass die Klassenbibliothek eines JDK 'javax.realtime' hat, ist bedeutungslos, da Sie beim Kompilieren einer Android-App keine Klassenbibliothek eines JDK verwenden. – CommonsWare
Danke für die Antwort, Sie sind 100% korrekt, mein Fehler. Das Problem lag in der Abhängigkeit von javolution (die aus der JScience-Bibliothek stammt), da es das Paket 'javax.realtime' enthält. –