MacOS下Java 1.8缺失tools.jar致旧Flutter项目编译失败求助
问题描述
在MacOS上执行/usr/libexec/java_home -V | grep jdk显示已安装Java 8,路径为/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home,但Android Studio构建旧Flutter应用时,任务:firebase_messaging:compileDebugJavaWithJavac失败,提示找不到tools.jar,需检查JDK路径是否有效。
相关命令输出:
/usr/libexec/java_home -V | grep jdk Matching Java Virtual Machines (1): 1.8.411.09 (arm64) "Oracle Corporation" - "Java" /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
JDK目录ls -la输出:
total 56 drwxr-xr-x 13 root wheel 416 13 Mar 08:24 . drwxr-xr-x 10 root wheel 320 27 Mag 10:13 .. -rw-r--r-- 1 root wheel 3245 13 Mar 08:23 COPYRIGHT -rw-r--r-- 1 root wheel 44 13 Mar 08:23 LICENSE -rw-r--r-- 1 root wheel 46 13 Mar 08:23 README -rw-r--r-- 1 root wheel 190 13 Mar 08:23 THIRDPARTYLICENSEREADME-JAVAFX.txt -rw-r--r-- 1 root wheel 190 13 Mar 08:23 THIRDPARTYLICENSEREADME.txt -rw-r--r-- 1 root wheel 955 13 Mar 08:23 Welcome.html drwxr-xr-x 17 root wheel 544 27 Mag 10:13 bin drwxr-xr-x 4 root wheel 128 13 Mar 08:24 legal drwxr-xr-x 99 root wheel 3168 13 Mar 08:46 lib drwxr-xr-x 5 root wheel 160 13 Mar 08:24 man -rw-r--r-- 1 root wheel 168 13 Mar 08:23 release
bin子目录ls -la输出:
total 3688 drwxr-xr-x 17 root wheel 544 27 Mag 10:13 . drwxr-xr-x 13 root wheel 416 13 Mar 08:24 .. lrwxr-xr-x 1 root wheel 8 27 Mag 10:13 ControlPanel -> jcontrol -rwxr-xr-x 1 root wheel 174672 13 Mar 08:41 _javaws -rwxr-xr-x 1 root wheel 154080 13 Mar 08:41 java lrwxr-xr-x 1 root wheel 47 27 Mag 10:13 javaws -> /Library/Application Support/Oracle/Java/javaws -rwxr-xr-x 1 root wheel 3972 13 Mar 08:24 jcontrol -rwxr-xr-x 1 root wheel 154032 13 Mar 08:42 jjs -rwxr-xr-x 1 root wheel 154048 13 Mar 08:42 keytool -rwxr-xr-x 1 root wheel 154048 13 Mar 08:42 orbd -rwxr-xr-x 1 root wheel 154048 13 Mar 08:42 pack200 -rwxr-xr-x 1 root wheel 154048 13 Mar 08:42 policytool -rwxr-xr-x 1 root wheel 154048 13 Mar 08:41 rmid -rwxr-xr-x 1 root wheel 154048 13 Mar 08:41 rmiregistry -rwxr-xr-x 1 root wheel 154048 13 Mar 08:41 servertool -rwxr-xr-x 1 root wheel 154048 13 Mar 08:42 tnameserv -rwxr-xr-x 1 root wheel 150208 13 Mar 08:41 unpack200
问题根源
你当前使用的是JRE(Java运行环境),而非JDK(Java开发工具包)。/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home是Oracle为浏览器插件提供的JRE路径,JRE仅包含运行Java程序所需的文件,没有Android构建必需的tools.jar。
解决步骤
1. 卸载现有JRE(可选但推荐)
执行以下命令清理当前的JRE:
sudo rm -rf /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin sudo rm -rf /Library/PreferencePanes/JavaControlPanel.prefPane
2. 下载并安装Oracle Java 8 JDK
下载Java SE 8 JDK安装包(选择对应Mac架构的版本,如arm64),安装后JDK默认路径为/Library/Java/JavaVirtualMachines/jdk1.8.xxx.jdk/Contents/Home。
3. 验证JDK安装
执行命令确认正确的JDK被识别:
/usr/libexec/java_home -V | grep jdk
输出应显示类似如下的JDK路径(而非JRE路径):
Matching Java Virtual Machines (1): 1.8.411.09 (arm64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_411.jdk/Contents/Home
4. 配置Android Studio使用正确JDK
- 打开Android Studio,按下快捷键
⌘;打开Project Structure - 切换到
SDK Location标签页,找到JDK location - 选择刚安装的JDK路径,或直接输入
/Library/Java/JavaVirtualMachines/jdk1.8.xxx.jdk/Contents/Home - 点击
Apply和OK,重新构建项目
5. 配置环境变量(可选)
为确保终端和其他工具也使用正确的JDK,在~/.zshrc(或~/.bash_profile,根据你的Shell环境)中添加:
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
执行source ~/.zshrc使配置生效。
内容的提问来源于stack exchange,提问作者realtebo

