任务执行失败:':app:preDexDebug' [英] Execution failed for task: ':app:preDexDebug'

查看:60
本文介绍了任务执行失败:':app:preDexDebug'的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我遇到了那个著名的:app:preDexDebug"错误.

I am experiencing that famous ':app:preDexDebug'-error.

首先:清理项目或重建项目没有错误.在默认设置下,我将项目字节码版本设置为 1.7,在项目结构中的 SDK Location 下,JDK 位置似乎也是正确的.经过一段时间的研究,我仍然没有找到解决这个问题的方法.

First of all: Cleaning the project or rebuilding it works without errors. Under default settings I set the project bytecode version to 1.7 and under SDK Location in the project structure the JDK location seems to be correct, too. After a while of researching I still did not find the solution for this problem.

当我尝试在 Android Studio 下运行项目时出现错误.如前所述,使用 Gradle 进行清理、重建和同步工作正常(看起来像 - 没有错误).

The error occurs when I try to run the project under Android Studio. Like mentioned before, cleaning, rebuilding and syncing with Gradle works fine (looks like it - no errors).

这是 gradle 控制台显示的内容:

This is what the gradle console shows:

Configuration on demand is an incubating feature.
:app:preBuild UP-TO-DATE
:app:preDebugBuild UP-TO-DATE
:app:compileDebugNdk UP-TO-DATE
:app:checkDebugManifest
: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
AGPBI: {"kind":"SIMPLE","text":"UNEXPECTED TOP-LEVEL EXCEPTION:","position":{},"original":"UNEXPECTED TOP-LEVEL EXCEPTION:"}
AGPBI: {"kind":"SIMPLE","text":"com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version (0034.0000)","position":{},"original":"com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version (0034.0000)"}
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:472)","position":{},"original":"\tat com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:472)"}
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406)","position":{},"original":"\tat com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406)"}
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388)","position":{},"original":"\tat com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388)"}
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251)","position":{},"original":"\tat com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251)"}
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.command.dexer.Main.processClass(Main.java:704)","position":{},"original":"\tat com.android.dx.command.dexer.Main.processClass(Main.java:704)"}
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.command.dexer.Main.processFileBytes(Main.java:673)","position":{},"original":"\tat com.android.dx.command.dexer.Main.processFileBytes(Main.java:673)"}
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.command.dexer.Main.access$300(Main.java:83)","position":{},"original":"\tat com.android.dx.command.dexer.Main.access$300(Main.java:83)"}
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:602)","position":{},"original":"\tat com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:602)"}
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)","position":{},"original":"\tat com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)"}
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)","position":{},"original":"\tat com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)"}
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)","position":{},"original":"\tat com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)"}
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.command.dexer.Main.processOne(Main.java:632)","position":{},"original":"\tat com.android.dx.command.dexer.Main.processOne(Main.java:632)"}
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.command.dexer.Main.processAllFiles(Main.java:510)","position":{},"original":"\tat com.android.dx.command.dexer.Main.processAllFiles(Main.java:510)"}
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.command.dexer.Main.runMonoDex(Main.java:280)","position":{},"original":"\tat com.android.dx.command.dexer.Main.runMonoDex(Main.java:280)"}
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.command.dexer.Main.run(Main.java:246)","position":{},"original":"\tat com.android.dx.command.dexer.Main.run(Main.java:246)"}
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.command.dexer.Main.main(Main.java:215)","position":{},"original":"\tat com.android.dx.command.dexer.Main.main(Main.java:215)"}
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.command.Main.main(Main.java:106)","position":{},"original":"\tat com.android.dx.command.Main.main(Main.java:106)"}
AGPBI: {"kind":"SIMPLE","text":"...while parsing impl/org/controlsfx/ImplUtils.class","position":{},"original":"...while parsing impl/org/controlsfx/ImplUtils.class"}
AGPBI: {"kind":"SIMPLE","text":"1 error; aborting","position":{},"original":"1 error; aborting"}


 FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:preDexDebug'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.7.0_67\bin\java.exe'' finished with non-zero exit value 1

如下所示,我删除了 build.gradle 中的compile android. ..."行,但它仍然不起作用.所以这是我的 gradle 构建文件:

As you see below, I removed the "compile android. ..."-line in my build.gradle, but it still didn't work. So here is my gradle build file:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion '22.0.1'
    compileOptions.encoding = 'windows-1251'

    defaultConfig {
        applicationId "de.giessen.advenco.key2operate"
        minSdkVersion 15
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
}

看起来 Gradle 的 JDK 有一些问题,但我不知道是哪些问题以及如何修复它们.希望大家帮帮忙.

It looks like Gradle has some problems with my JDK, but I don't know what kind of and how to fix them. I hope you guys can help.

我发现,version (0034.0000) 意味着,我使用的是 Java 8.奇怪的是,我绝对不使用 Java 8.在 Android Studio 中,我定义了"C:\Program Files\Java\jdk1.7.0_67" 的 JDK 路径.这是 64 位 Java(顺便说一句,我使用的是 Win 7 64 位).除此之外,我在 "C:\Program Files (x86)\Java\jdk1.7.0_75" 中有 32 位 Java,但我没有从 Android Studio 指向它的位置(我需要两个我机器上的版本).有谁知道,为什么 Android Studio 认为我的机器上有 Java 8?正如您在我的 gradle 构建文件中看到的,我将 sourceCompatibilitytargetCompatibility 设置为 JavaVersion.VERSION_1_7.Android Studio 中是否有任何隐藏设置来定义 Java 8 设置?

I found out, that version (0034.0000) means, that I am using Java 8. The strange thing is, that I definitely do not use Java 8. In Android Studio I defined the JDK-path to "C:\Program Files\Java\jdk1.7.0_67". This is 64-Bit Java (I am using Win 7 64-Bit btw.). Besides of that I have 32-Bit Java at "C:\Program Files (x86)\Java\jdk1.7.0_75", but I am not pointing on its location from Android Studio (I need both versions on my machine). Does anyone know, why Android Studio thinks, that I have Java 8 on my machine? As you can see in my gradle build file, I set the sourceCompatibility and the targetCompatibility to JavaVersion.VERSION_1_7. Are there any hidden settings somewhere in Android Studio, which define the Java 8 setting?

推荐答案

已解决.

让我困惑的是:输出 com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version (0034.0000)","position":{},"original":"com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version (0034.0000)" 让我想想,错误来自一些 android 库,因为每个 JDK 设置都已设置到 1.7.

What confused me: The output com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version (0034.0000)","position":{},"original":"com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version (0034.0000)" let me think, that the error comes out of some android libraries, because every JDK-setting was set to 1.7.

但我知道在某个地方使用了 Java 8.这对我来说真的很奇怪.

But I knew that somewhere Java 8 was used. It was really strange to me.

解决方案:尽管显示了使用 --stacktrace 或 --debug 的永久通知,但我不知道在哪里使用它们(在任何地方都没有解释).在搜索设置后,我偶然发现了此选项的文本字段.所以我在里面写了--debug".此选项为我提供了有关真正导致错误的信息.由于调试模式给出了库的标题,这导致了使用 Java 8 的错误.由于 Eclipse 没有抱怨这一点,我公司中没有人关心这个.作为回报,让我想到的是,一切都必须正确.

Solution: Even though the permament notify of using --stacktrace or --debug was shown, I did not know where to use them (it was not explained anywhere). After searching the settings I stumbled upon the textfield for this options. So I wrote "--debug" in it. This option gave me information about, what really causes the error. Thanks to the debug-mode the title of the library was given, which caused the error by using Java 8. Since Eclipse doesn't complain about that, nobody in my company took care of this. What let me think in return, that everything had to be correct.

简而言之:如果您遇到错误,就像以前的许多人一样,但他们的解决方案不起作用或者您的情况似乎很特殊,只需使用--debug".真正的信息隐藏在那里.

To make things short: If you are experiencing errors, like many people before, but their solutions don't work or your case seems to be very special, just use "--debug". The true informations are hidden there.

这篇关于任务执行失败:':app:preDexDebug'的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆