LoginSignup
15
15

More than 5 years have passed since last update.

gradle-retrolambdaを使ってビルドした時に `you must set the path to jdk8` エラーが出た時の対処法

Last updated at Posted at 2015-09-12

retrolambdaの導入でgradle-retrolambdaを使った時に、以下のエラーが出た時の対処法です。

Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
> When running gradle with java 5, 6 or 7, you must set the path to jdk8, either with property retrolambda.jdk or environment variable JAVA8_HOME

※ コマンドはMacの場合だけしか書いてません。すみません。。。

1. java8がインストールされているか

Macの場合、 /usr/libexec/java_home -V で確認できるはずです。
Java8がなかったらOracleのページからインストールしましょう。

% /usr/libexec/java_home -V
Matching Java Virtual Machines (3):
    1.7.0_71, x86_64:   "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home
    1.6.0_65-b14-462, x86_64:   "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
    1.6.0_65-b14-462, i386: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

2. JAVA8_HOMEが設定されているか

echo $JAVA8_HOME で確認しましょう。

% echo $JAVA8_HOME
/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/

もしセットされていなければセットしましょう。

export JAVA8_HOME=`/usr/libexec/java_home -v 1.8`

3. gradleで JAVA8_HOME が読み取れているか

println で、 System.getenv("JAVA8_HOME") の値がちゃんと読めているか確認します。

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

android {
    ...
}

retrolambda {
    println("***************** ---------- *******************")
    println("JAVA8_HOME: " + System.getenv("JAVA8_HOME"))
    println("***************** ---------- *******************")
    jdk System.getenv("JAVA8_HOME")
    defaultMethods true
}

dependencies {
    ...
}

もしnullだとしたら、AndroidStudioに環境変数を渡せていないです。

***************** ---------- *******************
JAVA8_HOME: null
***************** ---------- *******************

launchctl で、環境変数を渡してやります。AndroidStudioに環境変数を渡す を参考に。

launchctl setenv JAVA8_HOME $JAVA8_HOME
15
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
15