java home should_NB: JAVA_HOME should point to a JDK not a JRE

在Centos 6.10上部署项目前,使用yum安装jdk,配置环境变量,java -version正常输出,java -jar xx.jar能正常运行Spring Boot项目。但安装Maven并配置后报错。

错误信息

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

1

2

3

解决方案

在Maven->bin目录下,Linux系列的服务器和Mac修改mvn文件,添加本机的jdk目录到如下位置,引号可复制该文档里的。

Windows下修改mvn.bat同样位置添加:set JAVA_HOME=D:\Java\jdk1.8.0_101

以下为详细经历过程

最开始/etc/profile配置如下:

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-0.el7_5.x86_64

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jar、

export PATH=$PATH:$JAVA_HOME/bin

1

2

3

查看目录后发现没有bin目录,以为yum安装的有问题,后改为解压版,并删除所有Jdk相关文件。

Jdk和Maven均为从官网下载后,解压到服务器上的。

路径为:/root/soft/jdk1.8.0_221和/root/soft/apache-maven-3.5.4

在/etc/profile中已配置JAVA_HOME和CLASSPATH,具体如下:

JAVA_HOME=/root/soft/jdk1.8.0_221

JRE_HOME=/root/soft/jdk1.8.0_221/jre

CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib

PATH=$JAVA_HOME/bin:$PATH

export PATH JAVA_HOME CLASSPATH

M2_HOME=/root/soft/apache-maven-3.5.4

PATH=$M2_HOME/bin:$PATH

export M2_HOME PATH

1

2

3

4

5

6

7

8

9

运行java -version正常输出:

java version "1.8.0_221"

Java(TM) SE Runtime Environment (build 1.8.0_221-b11)

Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)

1

2

3

运行mvn -version还是输出开始的错误,echo $PATH 和 which java输出均正常。连续几天折腾N个小时,翻遍谷歌百度,还是没解决。

在解决maven报错JAVA_HOME should point to a JDK not a JRE

博客中找到思路。

在Maven文件夹中的bin目录下,查看启动脚本(Unix上名为mvn文件,Windows上为mvn.cmd),以mvn为例:

if $cygwin ; then

[ -n "$MAVEN_HOME" ] &&

MAVEN_HOME=`cygpath --unix "$MAVEN_HOME"`

[ -n "$JAVA_HOME" ] &&

JAVA_HOME=`cygpath --unix "$JAVA_HOME"`

[ -n "$CLASSPATH" ] &&

CLASSPATH=`cygpath --path --unix "$CLASSPATH"`

fi

# For MinGW, ensure paths are in Unix format before anything is touched

if $mingw ; then

[ -n "$MAVEN_HOME" ] &&

MAVEN_HOME=`(cd "$MAVEN_HOME"; pwd)`

[ -n "$JAVA_HOME" ] &&

JAVA_HOME=`(cd "$JAVA_HOME"; pwd)`

# TODO classpath?

fi

JAVA_HOME=`/root/soft/jdk1.8.0_221` # 我加的!!!

if [ -z "$JAVA_HOME" ] ; then

JAVACMD=`which java`

else

JAVACMD="$JAVA_HOME/bin/java"

fi

if [ ! -x "$JAVACMD" ] ; then

echo "The JAVA_HOME environment variable is not defined correctly" >&2

echo "This environment variable is needed to run this program" >&2

echo "NB: JAVA_HOME should point to a JDK not a JRE" >&2

exit 1

fi

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

脚本中就是判断系统变量是否存在,应该就是这个地方出问题了,按照博文中的说明加上jdk的位置。搞定!!!!

点赞 1

————————————————

版权声明:本文为CSDN博主「geekfly」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/TMaskBoy/article/details/99875484

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值