Linux系统jdk版本变更操作说明
一、jdk版本变更
(一)下载jdk
jdk下载地址:Java Downloads | Oracle
以jdk-8u341-linux-x64.tar.gz为例:
(二)上传jdk到指定目录
新建jdk目录/usr/jdk,并上传jdk文件到/usr/jdk
[test@localhost ~]$ mkdir /usr/jdk [test@localhost ~]$cd/usr/jdk/ [test@localhost jdk]$ rz ZMODEM Session started e50 ------------------------ Sent jdk-8u341-linux-x64.tar.gz [test@localhost jdk]$ ls jdk-8u341-linux-x64.tar.gz |
(三)解压jdk文件
解压jdk-8u341-linux-x64.tar.gz文件
[test@localhost jdk]$ tar zxvf jdk-8u341-linux-x64.tar.gz [test@localhost jdk]$ ls jdk1.8.0_341 jdk-8u341-linux-x64.tar.gz |
(四)给jdk文件夹创建软链接(建议)
添加软链接的目的是后续变更jdk版本只需要变更jdk_using的目标文件即可,无需修改配置文件。
PS:此步骤非必须,如未执行,后续修改配置步骤需注意填写jdk文件真实的绝对路径
[test@localhost jdk]$ ln -s jdk1.8.0_341 jdk_using [test@localhost jdk]$ ls jdk1.8.0_341 jdk-8u341-linux-x64.tar.gz jdk_using [test@localhost jdk]$ ll -n jdk_using lrwxrwxrwx. 1 1000 1000 12 8月 1 09:28jdk_using->jdk1.8.0_341 |
(五)配置当前用户环境变量~/.bash_profile
查看当前jdk版本
[test@localhost jdk]$ java -version openjdk version"1.8.0_262" OpenJDK Runtime Environment (build 1.8.0_262-b10) OpenJDK 64-Bit Server VM (build 25.262-b10, mixed mode) |
修改系统配置文件~/.bash_profile,添加JAVA_HOME等系统参数,并source
[test@localhost jdk]$ vim ~/.bash_profile #在配置文件底部添加如下配置 #如未执行步骤4,则配置中的jdk_using需要配置为jdk的真实的绝对路径 exportJAVA_HOME=/usr/jdk/jdk_using exportCLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar exportPATH=$PATH:$JAVA_HOME/bin [test@localhost jdk]$ tail -3 ~/.bash_profile export JAVA_HOME=/usr/jdk/jdk_using export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin [test@localhost jdk]$ source ~/.bash_profile |
查看变更后的jdk版本
[test@localhost jdk]$ java -version openjdk version"1.8.0_262" OpenJDK Runtime Environment (build 1.8.0_262-b10) OpenJDK 64-Bit Server VM (build 25.262-b10, mixed mode) |
此时发现未修改成功,查看常见问题(一)修改~/.bash_profile,并且source,但jdk版本不是目标版本
二、常见问题
(一)修改~/.bash_profile,并且source,但jdk版本不是目标版本
查看当前jdk版本
[test@localhost jdk]$ java -version openjdk version"1.8.0_262" OpenJDK Runtime Environment (build 1.8.0_262-b10) OpenJDK 64-Bit Server VM (build 25.262-b10, mixed mode) |
查看是否使用系统默认的open-jdk
[test@localhost ~]$ which java /usr/bin/java [test@localhost ~]$ whereis java java: /usr/bin/java /usr/lib/java /etc/java /usr/share/java /usr/jdk/jdk1.8.0_341/bin/java /usr/share/man/man1/java.1.gz [test@localhost ~]$ rpm -qa | grep java java-1.7.0-openjdk-headless-1.7.0.261-2.6.22.2.el7_8.x86_64 python-javapackages-3.4.1-11.el7.noarch tzdata-java-2020a-1.el7.noarch java-1.8.0-openjdk-headless-1.8.0.262.b10-1.el7.x86_64 java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64 javapackages-tools-3.4.1-11.el7.noarch java-1.7.0-openjdk-1.7.0.261-2.6.22.2.el7_8.x86_64 |
发现系统环境变量中存在多个onpen-jdk版本
卸载open-jdk
[test@localhost ~]$ sudo yum remove -y java* 已加载插件:fastestmirror, langpacks 正在解决依赖关系 …… 依赖关系解决 …… 移除 5软件包(+4依赖软件包) 安装大小:209 M Downloading packages: Running transaction check Running transactiontest Transactiontestsucceeded Running transaction 正在删除 …… 完毕! |
查看是否成功卸载open-jdk
[test@localhost ~]$ rpm -qa | grep java python-javapackages-3.4.1-11.el7.noarch tzdata-java-2020a-1.el7.noarch |
检查卸载open-jdk后jdk版本(如未更新,则再执行一遍source ~/.bash_profile)
[test@localhost ~]$ java -version java version"1.8.0_341" Java(TM) SE Runtime Environment (build 1.8.0_341-b10) Java HotSpot(TM) 64-Bit Server VM (build 25.341-b10, mixed mode) |
Jdk版本已成功变更。
(二)修改~/.bash_profile,并且source,提示“Permission denied/权限不够”
[test@localhost ~]$ java -version -bash: /usr/jdk/jdk_using/bin/java:权限不够 |
查看jdk文件是否有执行权限
[test@localhost ~]$ ll -d /usr/jdk/jdk1.8.0_341/ drw-r--r--. 8 test test 273 8月 1 09:22/usr/jdk/jdk1.8.0_341/ |
发现jdk文件无执行权限,需要赋权
[test@localhost ~]$ chmod -R 755 /usr/jdk/jdk1.8.0_341/ [test@localhost ~]$ ll -d /usr/jdk/jdk1.8.0_341/ drwxr-xr-x. 8 test test 273 8月 1 09:22/usr/jdk/jdk1.8.0_341/ |
赋权后变更正常
[test@localhost ~]$ java -version java version"1.8.0_341" Java(TM) SE Runtime Environment (build 1.8.0_341-b10) Java HotSpot(TM) 64-Bit Server VM (build 25.341-b10, mixed mode) |
(三)重启中间件应用报错“The JRE was not found in directory ……”
此问题为jdk文件缺少文件,建议重新上传jdk包。
(四)提示“-bash: /usr/jdk/jdk_using/bin/java:无法执行二进制文件: 可执行文件格式错误”
[test@localhost jdk] $ java -version -bash: /usr/jdk/jdk_using/bin/java:无法执行二进制文件:可执行文件格式错误 |
查看下载的jdk版本和系统架构是否一致。
[test@localhost bin]$ uname -r 5.11.12-300.fc34.aarch64 |
发现系统架构为ARM架构,而本例中使用的jdk为X64版本,与系统版本不兼容。
建议至官网下载系统对应版本jdk,重新上传。