运行时的Android Studio错误消息

时间:2016-04-18 10:42:55

标签: android android-gradle

您能否解释一下错误信息和解决方案?

我正在开发android studio,我的任务很简单,只需使用库添加2个数字。上次运行成功时,我没有添加jar文件 。但是在添加jar文件后,项目不再运行。当我按下运行时,它会显示错误消息并停止工作。

  

错误:任务':app:transformClassesWithDexForDebug'执行失败。   com.android.build.api.transform.TransformException:java.lang.RuntimeException:com.android.ide.common.process.ProcessException:java.util.concurrent.ExecutionException:com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException:进程'命令' C:\ Program Files \ Java \ jdk1.8.0_74 \ bin \ java.exe''完成非零退出值1   信息:建筑失败   信息:总时间:5.158秒   信息:3个错误   信息:0警告   信息:请参阅控制台中的完整输出

Full error message log

My Full Java and XML code

Library

project : build.gradle code

Gradle文件

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"

    defaultConfig {
        applicationId "com.blogspot.virtualn0t3b00k.myapplication"
        minSdkVersion 8
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.3.0'
    compile files('libs/flanagan.jar')
}

4 个答案:

答案 0 :(得分:1)

因此,在下载代码后,真实错误低于...

问题是Android无法运行Java 8编译代码,如果你阅读了这是the library uses

  

用于编译flanagan.jar中的类的Java Platform 8的当前版本是jdk1.8.0。

此外,JAR文件包含一些未包含在Android SDK中的AWT和Swing包,因此无论如何代码都无法完全编译。

这可以解释为什么你说

  

添加jar文件后,项目不再运行

错误

Dex: Error converting bytecode to dex:
Cause: java.lang.RuntimeException: Exception parsing classes
    UNEXPECTED TOP-LEVEL EXCEPTION:
    java.lang.RuntimeException: Exception parsing classes
        at com.android.dx.command.dexer.Main.processClass(Main.java:752)
        at com.android.dx.command.dexer.Main.processFileBytes(Main.java:718)
        at com.android.dx.command.dexer.Main.access$1200(Main.java:85)
        at com.android.dx.command.dexer.Main$FileBytesConsumer.processFileBytes(Main.java:1645)
        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:672)
        at com.android.dx.command.dexer.Main.processAllFiles(Main.java:574)
        at com.android.dx.command.dexer.Main.runMonoDex(Main.java:311)
        at com.android.dx.command.dexer.Main.run(Main.java:277)
        at com.android.dx.command.dexer.Main.main(Main.java:245)
        at com.android.dx.command.Main.main(Main.java:106)
    Caused by: 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.parseClass(Main.java:764)
        at com.android.dx.command.dexer.Main.access$1500(Main.java:85)
        at com.android.dx.command.dexer.Main$ClassParserTask.call(Main.java:1684)
        at com.android.dx.command.dexer.Main.processClass(Main.java:749)
        ... 12 more

1 error; aborting
:app:transformClassesWithDexForDebug FAILED

答案 1 :(得分:0)

在build.gradle配置中启用multidex支持。

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"



    defaultConfig {
        applicationId "com.blogspot.virtualn0t3b00k.myapplication"
        multiDexEnabled true
        minSdkVersion 8
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    dexOptions {
        javaMaxHeapSize "4g"
    preDexLibraries = false
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.3.0'

}

如果还失败,则在应用程序类中添加以下代码

protected void attachBaseContext(Context base)
    {
        super.attachBaseContext(base);
        MultiDex.install(this);
    }

可能你的问题会解决。

答案 2 :(得分:0)

在buildTypes之后和依赖项之前在build.gradle中添加它,是的,不要忘记删除未使用的jar文件和编译文件(库)。

android {
    packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/ASL2.0'
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/license.txt'
    }
}

完成所有工作后清理一次项目。

答案 3 :(得分:-1)

尝试在build.gradle文件中添加它

defaultConfig {        
// Enabling multidex support.
multiDexEnabled true
}

请删除

compile files('libs/flanagan.jar')

来自app的build.gradle文件,因为

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

行包含库文件夹flanagan.jar,它位于libs文件夹中。所以添加

compile files('libs/flanagan.jar') is duplicating and giving the error