无法将XStream文件依赖项添加到Android Studio项目

8

我已经下载并添加了xstream-1.4.8.jar到我的Android Studio项目中。当我构建项目时,一切都很正常,但当我尝试运行它时,Gradle Build窗口会显示以下错误:

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: 进程“command 'C:\Program Files\Java\jdk1.8.0_25\bin\java.exe'”以非零退出值1结束 信息:构建失败 信息:总时间:14.974秒 信息:1个错误 信息:0个警告 信息:请参阅控制台中的完整输出
我已经查看了相关答案,但没有建议的解决方案适用于我。
提前致谢。
1个回答

18

XStream 1.4.8 是为 Java 8 编译的,而最新版本的 Android 支持的是 Java 7

解决方案之一是使用与 Android 兼容的 XStream 1.4.7;另一种解决方案是下载 XStream 1.4.8 的源代码并自行编译。在这种情况下,您需要删除 LambdaMapper.java 和可能的其他问题类。

此外,您可能会遇到使用不同版本的 xmlpull 解析器时出现问题。在这种情况下,您可以从编译中排除一个版本。

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

1
嗨,我在发布问题后不久就解决了。我现在正在使用XStream 1.4.7。非常感谢您的帮助。 - Sam
他们现在发布了1.4.10-java7,它不包含任何Java 8的内容。 - OneWorld
Gradle 3.0.0 的 Android 插件似乎不再接受您发布的排除命令,尽管在2.3.3上可以工作。请参见https://dev59.com/R6bja4cB1Zd3GeqPmNPI。 - OneWorld
@OneWorld 对我来说运行良好。也许是其他组合触发了错误。在删除项目中的.gradle文件夹之前,我无法构建一个项目(不是XStream相关的错误)。其他人没有这样的问题,都使用XStream。 - Dalija Prasnikar
@DalijaPrasnikar 你是对的。我终于找到了组合:https://dev59.com/R6bja4cB1Zd3GeqPmNPI#48560428 - OneWorld

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接