Centos7自带Java
(1)查看原自带版本
[root@localhost ~]# java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b12)
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)
(2)查看java程序路径
[root@localhost ~]# which java
/usr/bin/java
(3)查看java相关路径
[root@localhost ~]# whereis java
java: /usr/bin/java /usr/lib/java /etc/java /usr/share/java /usr/share/man/man1/java.1.gz
(4)查看JAVA_HOME环境变量
[root@localhost ~]# echo $JAVA_HOME
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64/
{message type="success" content="注:如果没有配置"/etc/profile"文件,则不会输出"$JAVA_HOME"的值。"/}
删除自带java(可以选择不删除也没事)
(1)查看CentOS自带JDK是否已安装
[root@localhost ~]# yum list installed | grep java
java-1.7.0-openjdk.x86_64 1:1.7.0.141-2.6.10.5.el7 @anaconda
java-1.7.0-openjdk-headless.x86_64 1:1.7.0.141-2.6.10.5.el7 @anaconda
java-1.8.0-openjdk.x86_64 1:1.8.0.131-11.b12.el7 @anaconda
java-1.8.0-openjdk-headless.x86_64 1:1.8.0.131-11.b12.el7 @anaconda
javapackages-tools.noarch 3.4.1-11.el7 @anaconda
python-javapackages.noarch 3.4.1-11.el7 @anaconda
tzdata-java.noarch 2017b-1.el7 @anaconda
(2)假使存在自带的jdk,删除centos自带的JDK
yum -y remove java-1.7.0-openjdk*
yum -y remove java-1.8.0-openjdk*
yum -y remove tzdata-java.noarch
(3)查看yum库下的java安装包
[root@localhost ~]# yum -y list java
已加载插件:fastestmirror, langpacks
epel/x86_64/metalink | 5.8 kB 00:00:00
https://mirrors.tuna.tsinghua.edu.cn/epel/7/x86_64/repodata/repomd.xml: [Errno 12] Timeout on https://mirrors.tuna.tsinghua.edu.cn/epel/7/x86_64/repodata/repomd.xml: (28, 'Resolving timed out after 30552 milliseconds')
正在尝试其它镜像。
epel | 3.2 kB 00:00:00
(1/3): epel/x86_64/updateinfo | 934 kB 00:00:07
(2/3): epel/x86_64/primary | 3.5 MB 00:00:08
(3/3): epel/x86_64/group_gz | 88 kB 00:00:11
Loading mirror speeds from cached hostfile
* base: mirrors.shu.edu.cn
* epel: mirror01.idc.hinet.net
* extras: mirrors.shu.edu.cn
* updates: mirrors.neusoft.edu.cn
epel 12590/12590
错误:没有匹配的软件包可以列出
[root@cvm-3igsk5y28a225 etc]# yum -y list java*
Loaded plugins: fastestmirror, product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
Loading mirror speeds from cached hostfile
* base: mirrors.tuna.tsinghua.edu.cn
* centos-sclo-rh: mirrors.bupt.edu.cn
* epel: d2lzkl7pfhq30w.cloudfront.net
* extras: mirrors.bupt.edu.cn
* updates: mirrors.bupt.edu.cn
Available Packages
java-1.6.0-openjdk.x86_64 1:1.6.0.41-1.13.13.1.el7_3 base
java-1.6.0-openjdk-demo.x86_64 1:1.6.0.41-1.13.13.1.el7_3 base
java-1.6.0-openjdk-devel.x86_64 1:1.6.0.41-1.13.13.1.el7_3 base
java-1.6.0-openjdk-javadoc.x86_64 1:1.6.0.41-1.13.13.1.el7_3 base
java-1.6.0-openjdk-src.x86_64 1:1.6.0.41-1.13.13.1.el7_3 base
java-1.7.0-openjdk.x86_64 1:1.7.0.261-2.6.22.2.el7_8 base
java-1.7.0-openjdk-accessibility.x86_64 1:1.7.0.261-2.6.22.2.el7_8 base
java-1.7.0-openjdk-demo.x86_64 1:1.7.0.261-2.6.22.2.el7_8 base
java-1.7.0-openjdk-devel.x86_64 1:1.7.0.261-2.6.22.2.el7_8 base
java-1.7.0-openjdk-headless.x86_64 1:1.7.0.261-2.6.22.2.el7_8 base
java-1.7.0-openjdk-javadoc.noarch 1:1.7.0.261-2.6.22.2.el7_8 base
java-1.7.0-openjdk-src.x86_64 1:1.7.0.261-2.6.22.2.el7_8 base
java-1.8.0-openjdk.i686 1:1.8.0.312.b07-1.el7_9 updates
java-1.8.0-openjdk.x86_64 1:1.8.0.312.b07-1.el7_9 updates
java-1.8.0-openjdk-accessibility.i686 1:1.8.0.312.b07-1.el7_9 updates
java-1.8.0-openjdk-accessibility.x86_64 1:1.8.0.312.b07-1.el7_9 updates
java-1.8.0-openjdk-demo.i686 1:1.8.0.312.b07-1.el7_9 updates
java-1.8.0-openjdk-demo.x86_64 1:1.8.0.312.b07-1.el7_9 updates
java-1.8.0-openjdk-devel.i686 1:1.8.0.312.b07-1.el7_9 updates
java-1.8.0-openjdk-devel.x86_64 1:1.8.0.312.b07-1.el7_9 updates
java-1.8.0-openjdk-headless.i686 1:1.8.0.312.b07-1.el7_9 updates
java-1.8.0-openjdk-headless.x86_64 1:1.8.0.312.b07-1.el7_9 updates
java-1.8.0-openjdk-javadoc.noarch 1:1.8.0.312.b07-1.el7_9 updates
java-1.8.0-openjdk-javadoc-zip.noarch 1:1.8.0.312.b07-1.el7_9 updates
java-1.8.0-openjdk-src.i686 1:1.8.0.312.b07-1.el7_9 updates
java-1.8.0-openjdk-src.x86_64 1:1.8.0.312.b07-1.el7_9 updates
java-11-openjdk.i686 1:11.0.13.0.8-1.el7_9 updates
java-11-openjdk.x86_64 1:11.0.13.0.8-1.el7_9 updates
java-11-openjdk-demo.i686 1:11.0.13.0.8-1.el7_9 updates
java-11-openjdk-demo.x86_64 1:11.0.13.0.8-1.el7_9 updates
java-11-openjdk-devel.i686 1:11.0.13.0.8-1.el7_9 updates
java-11-openjdk-devel.x86_64 1:11.0.13.0.8-1.el7_9 updates
java-11-openjdk-headless.i686 1:11.0.13.0.8-1.el7_9 updates
java-11-openjdk-headless.x86_64 1:11.0.13.0.8-1.el7_9 updates
java-11-openjdk-javadoc.i686 1:11.0.13.0.8-1.el7_9 updates
java-11-openjdk-javadoc.x86_64 1:11.0.13.0.8-1.el7_9 updates
java-11-openjdk-javadoc-zip.i686 1:11.0.13.0.8-1.el7_9 updates
java-11-openjdk-javadoc-zip.x86_64 1:11.0.13.0.8-1.el7_9 updates
java-11-openjdk-jmods.i686 1:11.0.13.0.8-1.el7_9 updates
java-11-openjdk-jmods.x86_64 1:11.0.13.0.8-1.el7_9 updates
java-11-openjdk-src.i686 1:11.0.13.0.8-1.el7_9 updates
java-11-openjdk-src.x86_64 1:11.0.13.0.8-1.el7_9 updates
java-11-openjdk-static-libs.i686 1:11.0.13.0.8-1.el7_9 updates
java-11-openjdk-static-libs.x86_64 1:11.0.13.0.8-1.el7_9 updates
java-atk-wrapper.i686 0.30.4-5.el7 base
java-atk-wrapper.x86_64 0.30.4-5.el7 base
java-dirq.noarch 1.8-1.el7 epel
java-dirq-javadoc.noarch 1.8-1.el7 epel
java-latest-openjdk.x86_64 1:17.0.1.0.12-1.rolling.el7 epel
java-latest-openjdk-debug.x86_64 1:17.0.1.0.12-1.rolling.el7 epel
java-latest-openjdk-demo.x86_64 1:17.0.1.0.12-1.rolling.el7 epel
java-latest-openjdk-demo-debug.x86_64 1:17.0.1.0.12-1.rolling.el7 epel
java-latest-openjdk-demo-fastdebug.x86_64 1:17.0.1.0.12-1.rolling.el7 epel
java-latest-openjdk-devel.x86_64 1:17.0.1.0.12-1.rolling.el7 epel
java-latest-openjdk-devel-debug.x86_64 1:17.0.1.0.12-1.rolling.el7 epel
java-latest-openjdk-devel-fastdebug.x86_64 1:17.0.1.0.12-1.rolling.el7 epel
java-latest-openjdk-fastdebug.x86_64 1:17.0.1.0.12-1.rolling.el7 epel
java-latest-openjdk-headless.x86_64 1:17.0.1.0.12-1.rolling.el7 epel
java-latest-openjdk-headless-debug.x86_64 1:17.0.1.0.12-1.rolling.el7 epel
java-latest-openjdk-headless-fastdebug.x86_64 1:17.0.1.0.12-1.rolling.el7 epel
java-latest-openjdk-javadoc.x86_64 1:17.0.1.0.12-1.rolling.el7 epel
java-latest-openjdk-javadoc-zip.x86_64 1:17.0.1.0.12-1.rolling.el7 epel
java-latest-openjdk-jmods.x86_64 1:17.0.1.0.12-1.rolling.el7 epel
java-latest-openjdk-jmods-debug.x86_64 1:17.0.1.0.12-1.rolling.el7 epel
java-latest-openjdk-jmods-fastdebug.x86_64 1:17.0.1.0.12-1.rolling.el7 epel
java-latest-openjdk-src.x86_64 1:17.0.1.0.12-1.rolling.el7 epel
java-latest-openjdk-src-debug.x86_64 1:17.0.1.0.12-1.rolling.el7 epel
java-latest-openjdk-src-fastdebug.x86_64 1:17.0.1.0.12-1.rolling.el7 epel
java-latest-openjdk-static-libs.x86_64 1:17.0.1.0.12-1.rolling.el7 epel
java-latest-openjdk-static-libs-debug.x86_64 1:17.0.1.0.12-1.rolling.el7 epel
java-latest-openjdk-static-libs-fastdebug.x86_64 1:17.0.1.0.12-1.rolling.el7 epel
java-oauth.noarch 20100601-13.el7 epel
java-oauth-javadoc.noarch 20100601-13.el7 epel
java-runtime-decompiler.noarch 5.1-1.el7 epel
java-runtime-decompiler-javadoc.noarch 5.1-1.el7 epel
java_cup.noarch 1:0.11a-16.el7 base
java_cup-javadoc.noarch 1:0.11a-16.el7 base
java_cup-manual.noarch 1:0.11a-16.el7 base
javacc.noarch 5.0-10.el7 base
javacc-demo.noarch 5.0-10.el7 base
javacc-javadoc.noarch 5.0-10.el7 base
javacc-manual.noarch 5.0-10.el7 base
javacc-maven-plugin.noarch 2.6-17.el7 base
javacc-maven-plugin-javadoc.noarch 2.6-17.el7 base
javamail.noarch 1.4.6-8.el7 base
javamail-javadoc.noarch 1.4.6-8.el7 base
javapackages-tools.noarch 3.4.1-11.el7 base
javaparser.noarch 1.0.11-3.el7 epel
javaparser-javadoc.noarch 1.0.11-3.el7 epel
javassist.noarch 3.16.1-10.el7 base
javassist-javadoc.noarch 3.16.1-10.el7 base
javastroke.x86_64 0.5.1-33.el7 epel
javawriter.noarch 2.5.1-4.el7 epel
javawriter-javadoc.noarch 2.5.1-4.el7 epel
{tabs} {tabs-pane label="安装java 11"}
(4)安装java 11
yum -y install java-11-openjdk*
{/tabs-pane} {tabs-pane label="安装java-1.8"} (4)安装java-1.8.0-openjdk.x86_64
[root@localhost ~]# yum -y install java-1.8.0-openjdk*
{/tabs-pane} {/tabs}
(5)查看是否安装最新版java
[root@localhost ~]# java -version
openjdk version "1.8.0_171"
OpenJDK Runtime Environment (build 1.8.0_171-b10)
OpenJDK 64-Bit Server VM (build 25.171-b10, mixed mode)
{message type="success" content="发现并没有切换到java11"/}
(6)使用update-alternatives 查看已安装的java版本
[root@cvm-3igsk5y28a225 /]# update-alternatives --list
libnssckbi.so.x86_64 auto /usr/lib64/pkcs11/p11-kit-trust.so
ld auto /usr/bin/ld.bfd
mta auto /usr/sbin/sendmail.postfix
java manual /usr/lib/jvm/java-11-openjdk-11.0.13.0.8-1.el7_9.x86_64/bin/java
javac auto /usr/java/jdk1.8.0_121/bin/javac
jre_openjdk auto /usr/lib/jvm/java-11-openjdk-11.0.13.0.8-1.el7_9.x86_64
jre_11 auto /usr/lib/jvm/java-11-openjdk-11.0.13.0.8-1.el7_9.x86_64
jre_11_openjdk auto /usr/lib/jvm/jre-11-openjdk-11.0.13.0.8-1.el7_9.x86_64
java_sdk_openjdk auto /usr/lib/jvm/java-11-openjdk-11.0.13.0.8-1.el7_9.x86_64
java_sdk_11 auto /usr/lib/jvm/java-11-openjdk-11.0.13.0.8-1.el7_9.x86_64
java_sdk_11_openjdk auto /usr/lib/jvm/java-11-openjdk-11.0.13.0.8-1.el7_9.x86_64
javadoczip auto /usr/share/javadoc/java-11-openjdk-11.0.13.0.8-1.el7_9.x86_64.zip
javadocdir auto /usr/share/javadoc/java-11-openjdk-11.0.13.0.8-1.el7_9.x86_64/api
版本切换
update-alternatives --config java
选择自己想要的版本就好了
There are 2 programs which provide 'java'.
Selection Command
-----------------------------------------------
*+ 1 /usr/java/jdk1.8.0_121/jre/bin/java
2 java-11-openjdk.x86_64 (/usr/lib/jvm/java-11-openjdk-11.0.13.0.8-1.el7_9.x86_64/bin/java)
检查版本
[root@cvm-3igsk5y28a225 /]# java -version
openjdk version "11.0.13" 2021-10-19 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.13+8-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.13+8-LTS, mixed mode, sharing)
(7)重新安装后,jps命令可以使用
[root@localhost ~]# jps
6140 Jps
(8)查看java的编译器命令
[root@localhost ~]# javac
用法: javac <options> <source files>
其中, 可能的选项包括:
-g 生成所有调试信息
-g:none 不生成任何调试信息
-g:{lines,vars,source} 只生成某些调试信息
-nowarn 不生成任何警告
-verbose 输出有关编译器正在执行的操作的消息
-deprecation 输出使用已过时的 API 的源位置
-classpath <路径> 指定查找用户类文件和注释处理程序的位置
-cp <路径> 指定查找用户类文件和注释处理程序的位置
-sourcepath <路径> 指定查找输入源文件的位置
-bootclasspath <路径> 覆盖引导类文件的位置
-extdirs <目录> 覆盖所安装扩展的位置
-endorseddirs <目录> 覆盖签名的标准路径的位置
-proc:{none,only} 控制是否执行注释处理和/或编译。
-processor <class1>[,<class2>,<class3>...] 要运行的注释处理程序的名称; 绕过默认的搜索进程
-processorpath <路径> 指定查找注释处理程序的位置
-parameters 生成元数据以用于方法参数的反射
-d <目录> 指定放置生成的类文件的位置
-s <目录> 指定放置生成的源文件的位置
-h <目录> 指定放置生成的本机标头文件的位置
-implicit:{none,class} 指定是否为隐式引用文件生成类文件
-encoding <编码> 指定源文件使用的字符编码
-source <发行版> 提供与指定发行版的源兼容性
-target <发行版> 生成特定 VM 版本的类文件
-profile <配置文件> 请确保使用的 API 在指定的配置文件中可用
-version 版本信息
-help 输出标准选项的提要
-A关键字[=值] 传递给注释处理程序的选项
-X 输出非标准选项的提要
-J<标记> 直接将 <标记> 传递给运行时系统
-Werror 出现警告时终止编译
@<文件名> 从文件读取选项和文件名