Linux下安装maven, mvn -v报错: JAVA_HOME should point to a JDK not a JRE
官网下载 maven 上传至服务器, 解压后, 执行 mvn -v 报错, 错误内容如下:
The JAVA_HOME environment variable is not defined correctly
This environment variable is needed to run this program
NB: JAVA_HOME should point to a JDK not a JRE
百度查找了一圈, 都没有去实质性的解决该问题, 故有此文.
检查 apache-maven-3.x.x/bin 下的 mvn 脚本
发现如果有定义 $JAVA_HOME 的话, 则将变量 JAVACMD 定义为 $JAVA_HOME/bin/java
而我安装的是 openJDk1.8.0, 错误的将 JAVA_HOME 设置成 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64
通过 tree 命令 (自行安装), 可以看到 openjdk 目录下只有 jre 目录
故不能简单的编辑 /etc/profile 文件
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64
解决方案:
1. 不设置 JAVA_HOME
2. 将 JRE_HOME 设置成 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64/jre
建议: 还是老老实实的装 oracle 的 jdk8, 不要装 openJDK1.8
同理, 如若 windows 下执行 mvn -v 也报此错, 请检查 mvn.cmd 里 JAVA 环境变量设置.