Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Java 8的Retrolambda需求:mobile:dexDebug';例外情况_Android_Android Library_Retrolambda - Fatal编程技术网

Android Java 8的Retrolambda需求:mobile:dexDebug';例外情况

Android Java 8的Retrolambda需求:mobile:dexDebug';例外情况,android,android-library,retrolambda,Android,Android Library,Retrolambda,在我的项目中让Retro Lambda工作时遇到了很大的问题。有很多性问题和解决方案,但我没有发现任何不向成绩文件添加multiDexEnabled标志的 我得到以下错误 错误:任务“:mobile:dexDebug”的执行失败。 com.android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException:process'command'/Library/Java/JavaVirtualMac

在我的项目中让Retro Lambda工作时遇到了很大的问题。有很多性问题和解决方案,但我没有发现任何不向成绩文件添加
multiDexEnabled
标志的

我得到以下错误

错误:任务“:mobile:dexDebug”的执行失败。 com.android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException:process'command'/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/bin/Java''以非零出口值2结束

为了解决这个问题,我可以添加
multiDexEnabled true
,这很有效,但是它也会在我的构建时间上增加1分钟,这对于开发来说是不可接受的

有没有其他方法或者我应该不使用Retrolambda

编辑添加了build.grade代码

apply plugin: 'com.android.application'
apply plugin: 'me.tatarka.retrolambda'

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

defaultConfig {
    applicationId "com.myapplication"
    multiDexEnabled true
    minSdkVersion 11
    targetSdkVersion 22
    versionCode 1
    versionName "1.0"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}
}

buildscript {
repositories {
    mavenCentral()
    jcenter()
}

dependencies {
    classpath 'me.tatarka:gradle-retrolambda:3.2.0'
}
}
repositories {
    mavenCentral()
}

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

compile 'com.google.android.gms:play-services-maps:7.5.0'
compile 'com.google.android.gms:play-services-wearable:7.5.0'
compile 'com.google.android.gms:play-services-location:7.5.0'

compile 'com.android.support:appcompat-v7:22.2.1'
compile 'com.android.support:support-v4:22.2.1'
compile 'com.android.support:design:22.2.1'
compile 'com.android.support:cardview-v7:22.2.1'
compile 'com.android.support:recyclerview-v7:22.2.1'

compile 'com.android.support:support-annotations:22.2.1'

compile 'com.jakewharton:butterknife:7.0.1'
compile 'joda-time:joda-time:2.7'
/*Graphs*/
compile 'com.androidplot:androidplot-core:0.6.1'
/*Parse*/
compile project(':ParseLoginUI')

/*Images*/
compile 'com.squareup.picasso:picasso:2.3.3'
compile 'com.makeramen:roundedimageview:2.1.0' // https://github.com/vinc3m1/RoundedImageView
compile 'io.reactivex:rxandroid:0.25.0'
}
将我的JDK版本更改为1.7后编辑错误

错误:任务“:活动管理器:CompiledBugJava”的执行失败

使用java 5、6或7运行gradle时,必须使用属性retrolambda.jdk或环境变量将路径设置为jdk8 爪哇8_之家

因此,在我的.bash_配置文件中,我设置了如下环境变量:

export JAVA_HOME=$(/usr/libexec/java_home)
export JAVA8_HOME=$(/usr/libexec/java_home)
export JAVA7_HOME=$(/usr/libexec/java_home -v 1.7)
现在,当我在termainal
echo JAVA8_HOME
中执行以下操作时,它找到了正确的路径,但是我的Gradle仍然没有找到它。我正在我的成绩档案中测试它

println("***************** ---------- *******************")
    println("JAVA_HOME: " + System.getenv("JAVA_HOME"))
    println("JAVA7_HOME: " + System.getenv("JAVA7_HOME"))
    println("JAVA8_HOME: " + System.getenv("JAVA8_HOME"))
    println("***************** ---------- *******************")
所有这些输出的结果都为空

编辑我还用以下内容覆盖了retrolambda标记

retrolambda {

    jdk "/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home"
    oldJdk "/Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Contents/Home"
    javaVersion JavaVersion.VERSION_1_7

} 
然后我返回到使用“finished with non-zero exit value 2”获取原始异常,但现在使用项目设置中设置的JDK版本

错误:任务“:mobile:dexDebug”的执行失败

com.android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException:process'命令 “/Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Contents/Home/bin/Java” 以非零退出值2结束


在我的项目中,它工作正常,这是我的
build.gradle
code:

apply plugin: 'com.android.application'
apply plugin: 'me.tatarka.retrolambda'
apply plugin: 'com.neenbedankt.android-apt'

buildscript {
    repositories {
        mavenLocal()
        jcenter()
        mavenCentral()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:1.2.3'
        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4'
        classpath 'me.tatarka.retrolambda.projectlombok:lombok.ast:0.2.3.a2'
        classpath "me.tatarka:gradle-retrolambda:3.2.0"
    }

}

repositories {
    mavenCentral()
}

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "xyz.com"
        minSdkVersion 22
        targetSdkVersion 22

        multiDexEnabled true


        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_8
            targetCompatibility JavaVersion.VERSION_1_8
        }

        dexOptions {
            jumboMode = true
        }

        packagingOptions {
            exclude 'META-INF/LICENSE'
            exclude 'META-INF/notice.txt'
            exclude 'META-INF/license.txt'
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
    compile 'com.android.support:support-v4:22.2.1'
    compile 'com.android.support:appcompat-v7:21.0.3'
}

FYI:我在文件>>项目结构>>中选择了
C:\Program Files\Java\jdk1.7.0\u 79
,SDK位置
JDK位置
这是我配置OSx环境的方式

  • 安装最新的Java8

  • 编辑.bash_配置文件(位于主目录中)并添加以下行:

    导出JAVA\u HOME=/usr/libexec/JAVA\u HOME export JAVA7_HOME=/usr/libexec/java_HOME-v1.7

  • *现在“java-version”命令必须显示Java1.8,但retrolambda也可以访问Java7主目录

  • 将以下行添加到project build.gradle文件:

    依赖关系{ ... 类路径“我。塔塔卡:格拉德尔·兰博达:3.2.5” classpath'com.neenbedankt.gradle.plugins:android apt:1.8'

  • 将retrolambda插件应用于android应用程序模块build.gradle:

    应用插件:“me.tatarka.retrolambda”


  • *无需将retrolambda编译依赖项添加到此模块。

    请向我显示您的
    build.gradle
    文件代码。感谢共享您的成绩文件。请遵循您的“FYI”我将我的问题改回JDK1.7,并将我最新的问题添加到原始问题中。您是否仍启用了multiDexEnabled?否,im我的项目
    multiDexEnabled true
    已禁用。如果您没有收到multiDex错误,请不要使用它。我已在设置jdk标记的同时添加了retrolambda标记,但问题是它找不到JAVA8_HOME环境变量,即使我在终端中键入
    echo$JAVA8_HOME
    ,它也会出现correctly@DiscoS2如果你在mac电脑下,它不工作,你必须硬编码,比如:jdk'/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home'我想你这里有个错误?Java-version显示为1.7。你的意思是设置我改为1.8?通过安装最新版本并设置javahome和path,它将自动变为1.8。不幸的是,我认为你是错误的。至少在我的情况下,这没有发生。原因可能是我已经在我的bash配置文件中设置了javahome。我修复了编辑~/.bash_配置文件以导出JAVA_HOME的问题=$“/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home/jre”它不会“自动”设置它。在我的例子中,它已经设置好了。。