任务执行失败:':app:preDexDebug'
Execution failed for task: ':app:preDexDebug'
我遇到了著名的“:app:preDexDebug”错误。
首先:清理项目或重建项目没有错误。
在默认设置下,我将项目字节码版本设置为 1.7,在项目结构中的 SDK 位置下,JDK 位置似乎也是正确的。
经过一段时间的研究,我仍然没有找到解决这个问题的方法。
当我尝试运行 Android Studio 下的项目时出现错误。如前所述,清理、重建和与 Gradle 同步工作正常(看起来像 - 没有错误)。
这是 gradle 控制台显示的内容:
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.access0(Main.java:83)","position":{},"original":"\tat com.android.dx.command.dexer.Main.access0(Main.java:83)"}
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.command.dexer.Main.processFileBytes(Main.java:602)","position":{},"original":"\tat com.android.dx.command.dexer.Main.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 构建文件:
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'])
}
我的 JDK 看起来 Gradle 有一些问题,但我不知道是什么问题以及如何解决这些问题。希望大家帮帮忙
编辑:我发现 version (0034.0000)
意味着我正在使用 Java 8. 奇怪的是,我绝对不使用 Java 8. 在 Android Studio 我将 JDK 路径定义为 "C:\Program Files\Java\jdk1.7.0_67"
。这是 64 位 Java(顺便说一句,我使用的是 Win 7 64 位)。除此之外,我在 "C:\Program Files (x86)\Java\jdk1.7.0_75"
有 32 位 Java,但我没有从 Android Studio 指向它的位置(我的机器上需要两个版本)。有谁知道,为什么 Android Studio 认为我的机器上有 Java 8?正如您在我的 gradle 构建文件中所见,我将 sourceCompatibility
和 targetCompatibility
设置为 JavaVersion.VERSION_1_7
。 Android Studio 中是否有任何隐藏设置定义了 Java 8 设置?
我遇到了同样的问题。
对我来说作品:buildToolsVersion '21.1.2'
它显示 AGPBI 为警告,但仍然可以编译。
解决了。
让我困惑的是:输出 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-setting 都设置为 1.7。
但我知道某处使用了 Java 8。我真的很奇怪。
解决方案:即使显示了使用--stacktrace 或--debug 的永久通知,我也不知道在哪里使用它们(在任何地方都没有解释)。搜索设置后,我偶然发现了此选项的文本字段。所以我在里面写了“--debug”。此选项为我提供了有关真正导致错误的信息。感谢 debug-mode 给出了库的标题,这导致了使用 Java 8 的错误。由于 Eclipse 没有抱怨,我公司没有人关心这个。 return 让我想到的是,一切都必须正确。
简而言之:如果您像以前的许多人一样遇到错误,但他们的解决方案不起作用或者您的情况似乎很特殊,只需使用“--debug”。那里隐藏着真实的信息。
要添加 --debug(或 --stacktrace),转到文件 .. 设置 ..构建、执行、部署 .. 编译器 .. 命令行参数
转到文件 > 其他设置 > 默认设置 > 构建、执行、部署 > 编译器
并将以下参数添加到 Command Line Arguments
--debug --stacktrace
我遇到了著名的“:app:preDexDebug”错误。
首先:清理项目或重建项目没有错误。 在默认设置下,我将项目字节码版本设置为 1.7,在项目结构中的 SDK 位置下,JDK 位置似乎也是正确的。 经过一段时间的研究,我仍然没有找到解决这个问题的方法。
当我尝试运行 Android Studio 下的项目时出现错误。如前所述,清理、重建和与 Gradle 同步工作正常(看起来像 - 没有错误)。
这是 gradle 控制台显示的内容:
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.access0(Main.java:83)","position":{},"original":"\tat com.android.dx.command.dexer.Main.access0(Main.java:83)"}
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.command.dexer.Main.processFileBytes(Main.java:602)","position":{},"original":"\tat com.android.dx.command.dexer.Main.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 构建文件:
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'])
}
我的 JDK 看起来 Gradle 有一些问题,但我不知道是什么问题以及如何解决这些问题。希望大家帮帮忙
编辑:我发现 version (0034.0000)
意味着我正在使用 Java 8. 奇怪的是,我绝对不使用 Java 8. 在 Android Studio 我将 JDK 路径定义为 "C:\Program Files\Java\jdk1.7.0_67"
。这是 64 位 Java(顺便说一句,我使用的是 Win 7 64 位)。除此之外,我在 "C:\Program Files (x86)\Java\jdk1.7.0_75"
有 32 位 Java,但我没有从 Android Studio 指向它的位置(我的机器上需要两个版本)。有谁知道,为什么 Android Studio 认为我的机器上有 Java 8?正如您在我的 gradle 构建文件中所见,我将 sourceCompatibility
和 targetCompatibility
设置为 JavaVersion.VERSION_1_7
。 Android Studio 中是否有任何隐藏设置定义了 Java 8 设置?
我遇到了同样的问题。
对我来说作品:buildToolsVersion '21.1.2'
它显示 AGPBI 为警告,但仍然可以编译。
解决了。
让我困惑的是:输出 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-setting 都设置为 1.7。
但我知道某处使用了 Java 8。我真的很奇怪。
解决方案:即使显示了使用--stacktrace 或--debug 的永久通知,我也不知道在哪里使用它们(在任何地方都没有解释)。搜索设置后,我偶然发现了此选项的文本字段。所以我在里面写了“--debug”。此选项为我提供了有关真正导致错误的信息。感谢 debug-mode 给出了库的标题,这导致了使用 Java 8 的错误。由于 Eclipse 没有抱怨,我公司没有人关心这个。 return 让我想到的是,一切都必须正确。
简而言之:如果您像以前的许多人一样遇到错误,但他们的解决方案不起作用或者您的情况似乎很特殊,只需使用“--debug”。那里隐藏着真实的信息。
要添加 --debug(或 --stacktrace),转到文件 .. 设置 ..构建、执行、部署 .. 编译器 .. 命令行参数
转到文件 > 其他设置 > 默认设置 > 构建、执行、部署 > 编译器 并将以下参数添加到 Command Line Arguments
--debug --stacktrace