Android Java 8的Retrolambda需求:mobile:dexDebug';例外情况
在我的项目中让Retro Lambda工作时遇到了很大的问题。有很多性问题和解决方案,但我没有发现任何不向成绩文件添加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
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)
现在,当我在termainalecho 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环境的方式
*无需将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”它不会“自动”设置它。在我的例子中,它已经设置好了。。