gradle-retrolambda: Android Studio 0.9.1, OSX, JDK8 not found

This is my current configuration:

Module’s build.gradle:

apply plugin: 'retrolambda'

retrolambda {
    jdk System.getenv("JAVA8_HOME")
    oldJdk System.getenv("JAVA6_HOME")
    javaVersion JavaVersion.VERSION_1_6
}

System env

dhcp-159-104-130-193:~ me$ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home
dhcp-159-104-130-193:~ me$ echo $JAVA8_HOME
/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home

AS GUI config:

JDK Location: /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home

And it’s still not finding it due to:

Error:Execution failed for task ':mobile:patchAndroidJar'.
> Retrolambda: null/jre/lib/rt.jar does not exist, make sure that the environment variable JAVA_HOME or JAVA8_HOME, or the gradle property retrolambda.jdk points to a valid version of java8.

About this issue

  • Original URL
  • State: open
  • Created 10 years ago
  • Reactions: 1
  • Comments: 15

Most upvoted comments

My solution for it.

String java8 = getJavaVersion(8)
String java7 = getJavaVersion(7)
retrolambda {
    jdk java8 //have tried with JAVA8_HOME
    oldJdk java7 //have tried with JAVA6_HOME
    javaVersion JavaVersion.VERSION_1_7 //have matched the above with VERSION_1_6
}

String getJavaVersion(Integer v) {
  def sout = new StringBuffer()
  def proc = "/usr/libexec/java_home -v 1.$v".execute()
  proc.consumeProcessOutput(sout, new StringBuffer())
  proc.waitForOrKill(1000)
  return sout.toString().replace("\n", "").replace("\r", "")
}

I found a workaround by going to Android Studio -> Preferences -> Path Variables and adding

JAVA_8 /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home