Kotlin could not find the require JDK tools in the Java installtion '/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home' used by Gradle. Make sure is running on a JDK, not JRE.

最近在Android开发中使用gradle打包时遇到了上面的问题,排查很久,总算找到了原因:没有配置JAVA_HOME环境变量

首先先安装好jdk。

获取JAVA的安装路径:/usr/libexec/java_home -V

Matching Java Virtual Machines (2):

    1.8.261.12 (x86_64) "Oracle Corporation" - "Java" /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home

    1.8.0_261 (x86_64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home

/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home

mac下编辑profile:

vim ~/.bash_profile,如果找不到bash_profile文件,执行 touch .bash_profile

export ANDROID_HOME=/Users/user(你的mac账号名字)/Library/Android/sdk
export PATH=${PATH}:${ANDROID_HOME}/tools
export PATH=${PATH}:${ANDROID_HOME}/platform-tools
export NDK_ROOT=${ANDROID_HOME}/ndk/21.0.6113669
export PATH=${PATH}:${ANDROID_HOME}/cmake/3.10.2.4988404/bin


export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home
export CLASSPAHT=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH:

# HomeBrew
export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles
export PATH="/usr/local/bin:$PATH"
export PATH="/usr/local/sbin:$PATH"
# HomeBrew END

注意:HomeBrew不是必须的。

编辑完成后,按​​esc​​​退出插入模式,然后​​shift + :​​​输入​​wq!​​退出编辑模式。

执行下面命令使之生效

source ~/.bash_profile

验证下:

输入 echo $JAVA_HOME

/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home


注意:

在 ~/.bash_profile 中配置环境变量, 可是每次重启终端后配置的不生效。需要重新执行 : $source ~/.bash_profile

mac终端类型有两种,zsh和bash,其中,bash初始化默认.bash_profile,zsh初始化默认.zshrc

zsh: command not found: adb    

mac的Catalina系统默认zsh终端,所以.bash_profile并不会初始化。

解决办法

1. 修改~/.zshrc文件

vim ~/.zshrc

在~/.zshrc文件最后,增加一行:
source ~/.bash_profile

2. 还可以执行命令切换一下:chsh -s /bin/bash


延伸:

一、Mac系统下的环境变量
a. /etc/profile
b. /etc/paths
c. ~/.bash_profile
d. ~/.bash_login
e. ~/.profile
f. ~/.bashrc
说明:
1、其中a和b是系统级别的,系统启动就会加载,其余是用户接别的。
2、c,d,e按照从前往后的顺序读取,如果c文件存在,则后面的几个文件就会被忽略不读了,以此类推。
3、~/.bashrc没有上述规则,它是bash shell打开的时候载入的。4、建议在c中添加环境变量,以下也是以在c中添加环境变量来演示的。二、添加环境变量
1、输入以下代码后按enter,就可以打开bash_profile文件

vim ./.bash_profile

Mac下配置Android环境在 ~/.bash_profile 中配置环境变量, 可是每次重启终端后配置的不生效。需要重新执行 : $source ~/.bash_profile_java


2、添加环境变量

1、点击i进入编辑状态

2、首先创建一个“export + 自定义名字(例如图中的JAVA_HOME)”

3、然后使用export PATH= $PATH : $+自定义名字(JAVA_HOME)。(在一个PATH下添加多个环境变量后面用:号把路径拼接下来,)这样一个环境变量就添加上了。

4、然后按esc退出编辑状态,使用:wq退出。(有时会因为权限问题提示:E45: ‘readonly’ option is set (add ! to override)错误,这时使用:wq!强制保存退出就ok)

5、注意:先定义路径(MAVEN_HOME),后用path引入(PATH),是从上到下的顺序,要不然就读不出。
另外一点就是在bash_profile图中我最后添加了${PATH}:这里通过它引用了一些系统基础的命令,如我们刚刚使用vim,切记一定要加上否则连系统基础命令都会报command not found

3、补充Mac终端命令
如果是vi,则:Esc 退出编辑模式,输入以下命令:
:wq 保存后退出vi,若为 :wq! 则为强制储存后退出(常用)
:w 保存但不退出(常用)
:w! 若文件属性为『只读』时,强制写入该档案
:q 离开 vi (常用)
:q! 若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。
:e! 将档案还原到最原始的状态!