2015-03-09 13 views
7

Pobrałem i dodałem xstream-1.4.8.jar do mojego projektu Android Studio. Kiedy budować projektu to działa dobrze, ale gdy próbuję uruchomić go otrzymuję następujący błąd z okna Gradle produkcji:Nie można dodać zależności pliku XStream do projektu Android Studio

Information:Gradle tasks [:app:assembleDebug] 
:app:preBuild UP-TO-DATE 
:app:preDebugBuild UP-TO-DATE 
:app:compileDebugNdk UP-TO-DATE 
:app:checkDebugManifest 
:app:preReleaseBuild UP-TO-DATE 
:app:prepareComAndroidSupportAppcompatV72103Library UP-TO-DATE 
:app:prepareComAndroidSupportSupportV42103Library UP-TO-DATE 
:app:prepareDebugDependencies 
:app:compileDebugAidl UP-TO-DATE 
:app:compileDebugRenderscript UP-TO-DATE 
:app:generateDebugBuildConfig UP-TO-DATE 
:app:generateDebugAssets UP-TO-DATE 
:app:mergeDebugAssets UP-TO-DATE 
:app:generateDebugResValues UP-TO-DATE 
:app:generateDebugResources UP-TO-DATE 
:app:mergeDebugResources UP-TO-DATE 
:app:processDebugManifest UP-TO-DATE 
:app:processDebugResources UP-TO-DATE 
:app:generateDebugSources UP-TO-DATE 
:app:compileDebugJava UP-TO-DATE 
:app:preDexDebug 
UNEXPECTED TOP-LEVEL EXCEPTION: 
com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version (0034.0000) 
    at com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:472) 
    at com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406) 
    at com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388) 
    at com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251) 
    at com.android.dx.command.dexer.Main.processClass(Main.java:704) 
    at com.android.dx.command.dexer.Main.processFileBytes(Main.java:673) 
    at com.android.dx.command.dexer.Main.access$300(Main.java:83) 
    at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:602) 
    at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284) 
    at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166) 
    at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144) 
    at com.android.dx.command.dexer.Main.processOne(Main.java:632) 
    at com.android.dx.command.dexer.Main.processAllFiles(Main.java:510) 
    at com.android.dx.command.dexer.Main.runMonoDex(Main.java:280) 
    at com.android.dx.command.dexer.Main.run(Main.java:246) 
    at com.android.dx.command.dexer.Main.main(Main.java:215) 
    at com.android.dx.command.Main.main(Main.java:106) 
...while parsing com/thoughtworks/xstream/mapper/LambdaMapper.class 
1 error; aborting 
Error:Execution failed for task ':app:preDexDebug'. 

com.android.ide.common.process.ProcessException: org.gradle .process.internal.ExecException: Process 'command' C: \ Program Files \ Java \ jdk1.8.0_25 \ bin \ java.exe '' zakończony niezerową wartością wyjścia 1 Informacja: BUILD FAILED Informacja: Całkowity czas: 14.974 secs Informacja: 1 błąd Informacja: 0 ostrzeżeń Informacja: Zobacz pełne wyjście w konsoli

Przyjrzałem się pokrewnym odpowiedziom tutaj i żadne z sugerowanych rozwiązań nie działa dla mnie.

Z góry dziękuję. Kompilacja

Odpowiedz

15

XStream 1.4.8 jest kompilowana dla Java 8, a najnowsza wersja obsługuje Android Java 7.

Jednym z rozwiązań jest użycie XStream 1.4.7, który działa z systemem Android, a drugi do pobierania źródeł XStream 1.4.8 i samodzielne ich kompilowanie. W takim przypadku będziesz musiał usunąć LambdaMapper.java i ewentualnie inne problematyczne klasy.

Możliwe również problemy z różnymi wersjami używanego parsera xmlpull. W takim przypadku możesz wykluczyć jeden z kompilacji.

compile('com.thoughtworks.xstream:xstream:1.4.7') { 
    exclude group: 'xmlpull', module: 'xmlpull' 
} 
+1

Witam, dopracowałem to krótko po opublikowaniu pytania. Używam teraz XStream 1.4.7. Bardzo dziękuję za pomoc – Sam

+0

Teraz wydali [1.4.10-java7] (https://github.com/x-stream/xstream/issues/49) Nie zawiera żadnych rzeczy Java 8. – OneWorld

+0

Dodatek Android dla Gradle 3.0.0 prawdopodobnie nie akceptuje już polecenia wykluczenia, które opublikowałeś. Działa jednak na 2.3.3. Zobacz https://stackoverflow.com/questions/47335142/android-gradle-plugin-3-0-0-multiple-dex-files-define-lorg-xmlpull-mxp1-mxparse – OneWorld