一、背景: 线上服务端需要使用kafka, 要求jdk8+.目前线上版本为jdk7 需升级为 jdk8.
二、jdk7升级jdk8过程主要命令:
--1.卸载openjdk
java -version
rpm -qa | grep java
rpm -e --nodeps xxx
--2.上传新的 linux jdk8文件 并 解压:
tar -zxvf jdk-8u161-linux-x64.gz
mv /home/work/software/jdk1.8.0_161 /usr/local
--3.配置环境变量:
打开文件 /etc/profile 在最后面加入以下内容(其中/usr/local/jdk1.7.0_03 路径为自己服务器上面jdk的安装路径)
vim /etc/profile
#最后一行 unset pathmunge 行下添加配置: 需要先注释掉 jdk7的环境变量配置
# jdk8:
JAVA_HOME=/usr/local/jdk1.8.0_161
JRE_HOME=/usr/local/jdk1.8.0_161/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
-- 4.jdk7 升级至jdk8:
# 先找到旧的jdk7目录 & 删除jdk7目录
which java
rm -rf /usr/local/jdk1.7.0_79/jre/bin/java
which java
# 重新生效新的jdk8 环境变量
source /etc/profile
java -version
which java
source /etc/profile --使环境变量修改立即生效
echo $PATH --查看PATH值
java -version -》 输出如下证明jdk8升级成功
--5.启动服务端:
jps -v 正常输出
jmap 报错: VMVersionMismatchException: Supported versions are 24.79-b02. Target VM is 25.161-b12
问题提示猜测可能是 jdk版本问题,怀疑环境变量问题:
尝试带路径 使用 jmap: /usr/local/jdk1.8.0_161/bin/jmap -heap 27405
可以正常输出,证明就是环境变量问题.
查看环境变量: echo $PATH 换行显示如下
Fix方法: 覆盖环境变量 使jdk8环境变量只追加一次即可
vim /etc/profile
export PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/bin:/home/opt/bin:/opt/bin:/home/opt/bin
source /etc/profile -> 使修改后环境变量生效
打印最新环境变量
再次尝试 jmap -heap 27405 完美打印: 问题fix