You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu下Gradle构建Android项目:JAVA_HOME正确却提示JDK工具缺失

解决Gradle使用JRE而非JDK构建Android项目的问题

从你提供的命令输出来看,问题的核心很明确:虽然你的JAVA_HOME指向了JDK目录,但系统中实际生效的java命令来自JRE路径,Gradle在构建时优先使用了这个JRE环境,导致报错。下面一步步帮你解决:

1. 确认完整JDK是否已安装

首先检查是否安装了OpenJDK 8的完整JDK包(而不仅仅是JRE):

dpkg --list | grep openjdk-8-jdk

如果没有输出,说明你只装了JRE,需要安装完整JDK:

sudo apt-get install openjdk-8-jdk

2. 修正Java Alternatives配置

你的update-java-alternatives --list显示只有一个JDK条目,但readlink -f $(which java)指向了JRE的二进制文件,说明系统的java替代项配置有问题。执行以下命令将默认java切换到JDK的版本:

sudo update-alternatives --config java

如果有多个选项,选择对应/usr/lib/jvm/java-1.8.0-openjdk-amd64/bin/java的那一项(不是带jre的路径)。如果只有一个选项,先重新配置alternatives:

sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-1.8.0-openjdk-amd64/bin/java 1081
sudo update-alternatives --set java /usr/lib/jvm/java-1.8.0-openjdk-amd64/bin/java

执行完后再验证:

readlink -f $(which java)

应该输出/usr/lib/jvm/java-1.8.0-openjdk-amd64/bin/java,而不是带jre的路径。

3. 确保Gradle正确使用JDK

即使系统配置修复了,有时候Gradle wrapper可能会缓存旧的环境信息,或者在项目中有自定义配置。你可以:

  • 清理Gradle缓存并重新构建:
    ./gradlew clean build --no-build-cache
    
  • 直接在项目的gradle.properties中指定JDK路径(彻底避免系统环境的影响):
    org.gradle.java.home=/usr/lib/jvm/java-1.8.0-openjdk-amd64
    

这样Gradle构建时会强制使用这个JDK路径,不会再调用JRE。

关于JAVA_HOME的实际配置位置

你提到在常见的用户配置文件中没找到JAVA_HOME的配置,这是因为Ubuntu中如果没有手动设置,JAVA_HOME通常是通过update-java-alternatives自动生成的,或者由某些系统脚本(比如你找到的/etc/ca-certificates/update.d/jks-keystore)临时导出的。如果需要永久设置JAVA_HOME,可以在/etc/profile.d下创建一个自定义脚本:

sudo nano /etc/profile.d/jdk.sh

写入内容:

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH

保存后重启终端,JAVA_HOME就会永久生效。

至于Android Studio中构建正常的原因:Android Studio默认会自带或指定专属的JDK路径,不依赖系统全局的Java环境,所以不受这个问题影响。

内容的提问来源于stack exchange,提问作者c5525423

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:18:22