环境
CentOS6.10 32位 原有openjdk1.7
需求
升级1.7->1.8,并能执行jvm调优命令
实现
- 升级步骤请参考:https://blog.youkuaiyun.com/hjm4702192/article/details/82183647
- 升级完成后正常使用java -version命令
问题
- 执行jinfo命令时报错:
sun.jvm.hotspot.runtime.VMVersionMismatchException: Supported versions are xxx Target VM is xxx
问题原因:是由于机器上安装了多个jdk导致的。
解决方案:
-
使用时要指定路径 。
-
卸载原1.7,使用1.8
我这想着1.7也没啥用,决定用方案2.
使用命令查看jdk,发现含1.7、1.8相关文件:rpm -qa | grep java
此处选择仅删除1.7相关文件
该步骤可参考:https://blog.youkuaiyun.com/github_38924695/article/details/105155735
2.删除完1.7,再次执行jinfo,报错:
/usr/bin/jinfo: 没有那个文件或目录
尝试javac、jps皆无法使用!
问题原因:使用的yum 安装的openjdk 的话,是不会带java 开发调试工具 jstack jmap 等等的.
#使用命令查看有哪些可安装的jdk1.8 开发工具包:
yum list --showduplicate | grep java-1.8 | grep devel
#找到自己对应版本的工具包安装,例:
yum install java-1.8.0-openjdk-devel.i686
该步骤可参考:https://www.pianshen.com/article/5048275075/
- 使用jmap -heap命令执行报错:
unknown CollectedHeap type : class sun.jvm.hotspot.gc_interface.CollectedHeap
解决方案参考:https://www.cnblogs.com/chywx/p/11563297.html
找到对应版本的degubinfo下载安装:例我的:
wget http://debuginfo.centos.org/6/i386/java-1.8.0-openjdk-debuginfo-1.8.0.275.b01-0.el6_10.i686.rpm
rpm -ivh java-1.8.0-openjdk-debuginfo-1.8.0.275.b01-0.el6_10.i686.rpm
OK!