2015-03-09 13 views
7

Ich habe xstream-1.4.8.jar in mein Android Studio-Projekt heruntergeladen und hinzugefügt. Als ich das Projekt erstellen funktioniert es gut, aber wenn ich versuche, es zu laufen bekomme ich die folgende Fehlermeldung aus dem Fenster Gradle Körperbau:Kann keine XStream-Dateiabhängigkeit zum Android Studio-Projekt hinzufügen

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: Prozess 'command' C: \ Programme \ Java \ jdk1.8.0_25 \ bin \ java.exe '' beendet mit einem Wert ungleich Null 1 Information: BUILD FAILED Information: Gesamtzeit: 14.974 Sek. Information: 1 Fehler Information: 0 Warnungen Information: Vollständige Ausgabe in der Konsole anzeigen

Ich habe mir die entsprechenden Antworten hier angesehen und keine der vorgeschlagenen Lösungen funktioniert für mich.

Vielen Dank im Voraus.

Antwort

15

XStream 1.4.8 ist für Java 8 kompiliert und die neueste Version Android unterstützt ist Java 7.

Eine Lösung ist die Verwendung XStream 1.4.7, die mit Android funktioniert, und eine andere zum Download XStream 1.4.8 Quellen und kompilieren sie selbst. In diesem Fall müssen Sie LambdaMapper.java und möglicherweise einige andere problematische Klassen entfernen.

Auch können Sie Probleme mit verschiedenen Versionen von xmlpull Parser verwendet haben. In diesem Fall können Sie einen von der Kompilierung ausschließen.

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

Hallo, ich arbeitete das kurz nach dem Stellen der Frage aus. Ich verwende jetzt XStream 1.4.7. Vielen Dank für Ihre Hilfe – Sam

+0

Sie haben jetzt veröffentlicht [1.4.10-java7] (https://github.com/x-stream/xstream/issues/49) Es enthält keine Sachen von Java 8. – OneWorld

+0

Android Plugin für Gradle 3.0.0 scheint den von Ihnen geposteten Ausschlußbefehl nicht mehr zu akzeptieren. Es funktioniert jedoch am 2.3.3. Siehe https://stackoverflow.com/questions/47335142/android-gradle-plugin-3-0-0-multiple-dex-files-define-lorg-xmlpull-mxp1-mxparse – OneWorld