Skip to content

Android GradleプラグインのJava 17必須エラーの解決方法

問題の概要

Androidプロジェクトのビルド時に以下のエラーが発生する場合:

Android Gradle plugin requires Java 17 to run. You are currently using Java 11.

このエラーは、Android Gradleプラグインの新しいバージョンがJava 17以降を必要とするため発生します。主な原因は:

  • JDKが11以下に設定されている
  • 環境変数JAVA_HOMEが古いバージョンを指している
  • Android StudioのGradle設定が更新されていない

基本解決手順

1. Java 17のインストール

最新のJDK 17を公式サイトからダウンロード:

2. 環境変数の設定

Windows:

  1. システム環境変数の編集を開く
  2. JAVA_HOMEを新規作成/編集:
    JAVA_HOME = C:\Program Files\Java\jdk-17.0.x
  3. システムのPath変数に追加:
    %JAVA_HOME%\bin

macOS/Linux:

bash
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home

3. Android Studioの設定変更

  1. File > Settings > Build, Execution, Deployment > Build Tools > Gradle
  2. Gradle JDKJDK 17を選択:

応用シナリオ別解決策

環境変数を変更できない場合(React Native)

React Native環境ではJAVA_HOME完全に削除することで解決する場合があります:

  1. システム環境変数からJAVA_HOMEを削除
  2. Android Studio内の設定のみでJDKを管理

gradle.propertiesで明示的に指定

プロジェクトのgradle.propertiesファイルに直接パスを記述:

properties
# Windows例
org.gradle.java.home=C\:\\Program Files\\Java\\jdk-17

# macOS/Linux例
org.gradle.java.home=/usr/lib/jvm/java-17-openjdk-amd64

UbuntuでのOpenJDKインストール

bash
sudo apt update
sudo apt install openjdk-17-jdk-headless
sudo update-alternatives --config java  # 17を選択

macOS(Homebrew利用)

bash
brew install --cask zulu@17
export JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home

キャッシュクリアと最終確認

  1. Gradleキャッシュ削除
    bash
    rm -rf ~/.gradle/caches  # macOS/Linux
    del /s /q "%USERPROFILE%\.gradle\caches"  # Windows
  2. ターミナルでバージョン確認:
    bash
    java -version
    # 出力例: openjdk version "17.0.12" ...
  3. React Nativeプロジェクトの場合:
    bash
    cd android
    ./gradlew --version  # JDKバージョンチェック
    ./gradlew clean      # クリーンビルド

注意事項

  1. Unityユーザー向け警告:

    warn
    JDKフォルダの直接上書きは他のアプリに影響する可能性があります

    代替方法:

    • Android SDKパス内のJDKを更新
    • org.gradle.java.homeで明示的パス指定
  2. React Native 0.73以降: Java 21が必要な場合があります:

    tip
    React Native 0.73↑ではJava 21が必須
    → 環境変数とGradle設定を21に更新

この手順でBUILD SUCCESSFULが表示されれば解決です。プロジェクト要件に応じてJavaバージョンを適切に管理しましょう。