当前位置:  开发笔记 > 编程语言 > 正文

无法修复"ParseException:bad class file magic(cafebabe)或version(0034.0000)"

如何解决《无法修复"ParseException:badclassfilemagic(cafebabe)或version(0034.0000)"》经验,为你挑选了1个好方法。

我最近从我的AWS应用程序导入了一个jar,其中包含我要在我的Android应用程序上引用的所有对象.一旦在我的Android Studio项目中并通过Gradle连接,错误就会出现,并且在我清除导入的jar并重建所有内容之前不会消失.

我读到的内容:

此错误可能是合法的.当Android应用程序超过65k方法名称时,就会发生这种情况.我的应用程序可能很大,但如果我导入的所有库总计超过那个我会感到惊讶....我不会排除它,但这是很多方法.从我看到的,十分之九,这是一个配置错误.我读过的前几篇文章说要让Proguard删除所有未使用的方法,但这没有帮助.

我的配置:

我将Android Studio环境中的所有内容设置为运行Java 7:

项目字节码版本:1.7

JDK位置:C:\ Program Files\Java\jdk1.7.0_45

的build.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 20
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "com.example.maveric.helloworld"
        minSdkVersion 15
        targetSdkVersion 20
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.google.android.gms:play-services:4.2.42'
    compile 'com.android.support:appcompat-v7:20.0.0'
    compile 'org.apache.commons:commons-io:1.3.2'
    compile 'com.cedarsoftware:json-io:4.3.0'
}

我花了最后5个小时在SO上尝试每一个解决方案,并且没有任何一点运气.



1> Shadoninja..:

经过6个多小时的尝试解决方案,奥列格在评论中与我联系的最终导致了问题的真正原因.

这个问题的简要解释可以在这里找到,但我会尝试解释我的系统上的所有内容:

当我导入一个jar文件时,这个错误首先出现在我的主要Java项目中,该文件是在Eclipse中托管的.

此错误首先向用户发出的方式是通过"消息"选项卡,Gradle遍历其中的每个任务.崩溃的任务是

:app:transformClassesWithDexForDebug

问题是Gradle Messages窗口只是说任务失败,然后给出一条非描述性错误消息

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

为了获得更好的视图,您需要查看Gradle Console视图.终端视图中的文本告诉您:

FAILURE: Build failed with an exception.

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

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

向上滚动一点就表明堆栈跟踪很好,即使这个初始消息暗示应该添加额外的标志用于调试.堆栈跟踪的顶部说:

UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version (0034.0000)

但即便如此也无济于事.它试图告诉你的内容(我必须添加得非常糟糕)是它正在查看的类是使用不受支持的Java版本编译的.在我的例子中,版本(0034)是52的十六进制表示,这意味着Java 8. Android不支持Java 8,因此它终止了构建.

解决方案是回到我的Eclipse项目并导出jar文件,编译器设置为1.7版,现在一切都已启动并再次运行.我希望这有帮助!

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有