GitHub Actions中Gradle未使用指定JDK 8执行导致Java版本不兼容的问题解决咨询
我在Android Studio项目的GitHub Actions工作流里设置了以下步骤:
# previous download of repository - name: ☕ Set up JDK 8 ☕ uses: actions/setup-java@v3 with: distribution: 'temurin' java-version: '8' - name: Set JAVA_HOME for Gradle run: echo "org.gradle.java.home=${{ env.JAVA_HOME_8_X64 }}" >> gradle.properties - name: ✅ Grant execute permission for Gradle ✅ run: chmod +x gradlew - name: Build APK run: ./gradlew assembleRelease # more actions
但是执行./gradlew assembleRelease的时候报错了,原因是Gradle实际用了Java 21来执行,而我的Android版本只兼容Java 8,请问该怎么解决这个版本不兼容的问题?
我之前也碰到过类似的问题,其实核心是Gradle本身的运行环境和项目编译依赖的JDK可能没对齐,咱们可以从这几个方向调整:
1. 直接在Gradle执行步骤中强制指定JDK环境
有时候光靠gradle.properties里的配置可能不够,因为GitHub Actions的运行环境默认可能带了高版本JDK。咱们可以在执行gradlew的步骤里,直接把环境变量指定为JDK 8的路径,确保Gradle进程用的是咱们指定的版本:
- name: Build APK run: ./gradlew assembleRelease env: JAVA_HOME: ${{ env.JAVA_HOME_8_X64 }} PATH: ${{ env.JAVA_HOME_8_X64 }}/bin:$PATH
这样能强制覆盖掉系统默认的Java环境,避免Gradle误拾取到高版本。
2. 检查Gradle版本的兼容性
你得留意哦,有些高版本的Gradle本身已经不再支持Java 8作为自身的运行环境了(比如Gradle 8.x及以上版本,要求运行环境至少是Java 11)。如果你的项目用了这类高版本Gradle,哪怕你指定了项目编译用Java 8,Gradle自己还是会去用高版本Java运行。
这种情况有两个解决办法:
- 降级Gradle到支持Java 8运行的版本(比如Gradle 7.x系列);
- 调整配置,让Gradle运行用Java 11,但项目编译依然用Java 8——不过这得确认你的Android版本支持这种搭配。
3. 确认setup-java的环境变量是否正确
有时候JAVA_HOME_8_X64这个变量可能没被正确设置,你可以在设置JDK之后加个调试步骤,打印一下环境变量看看:
- name: 🐛 Debug JAVA_HOME 🐛 run: echo "JAVA_HOME: $JAVA_HOME, JAVA_HOME_8_X64: $JAVA_HOME_8_X64"
如果发现JAVA_HOME_8_X64是空的,那可以改用actions/setup-java设置的JAVA_HOME变量来配置gradle.properties,比如修改这个步骤:
- name: Set JAVA_HOME for Gradle run: echo "org.gradle.java.home=${{ env.JAVA_HOME }}" >> gradle.properties
备注:内容来源于stack exchange,提问作者José María




