centos java 版本查看命令 查看java版本命令
centos卸载openjdk
若需在CentOS系统中卸载OpenJDK,操作流程如下:
首先,通过运行:
shell
java-version
查看已安装的Java版本。确定您要移除的OpenJDK版本,记下版本号以便后续操作。然后,使用以下命令进行卸载,将`版本号`替换为对应的实际版本:
shell
sudo yum remove java-版本号-openjdk
在执行此操作前,系统可能会提示确认,输入"y"并按回车键继续。系统会清除相关文件和目录,开始卸载过程。
卸载完成后,通过再次运行`java-version`检查Java是否已移除。若无任何输出,说明OpenJDK已成功卸载。
务必注意,如果系统中还安装了其他Java版本或有其他依赖,需谨慎操作,确保在执行前备份并进行必要的测试,以避免影响其他软件的正常运行。
在centos7中安装jdk11,17并实现版本的切换
为了在CentOS 7系统中安装JDK 11和JDK 17并实现版本切换,以下是详细的步骤。
首先,访问清华大学软件镜像站下载所需的JDK版本文件。下载完成后,使用mobaxterm工具连接CentOS服务器。在连接界面中,选择SSH选项并输入服务器IP地址(通过执行`ip a`命令查看)。随后,将下载的JDK文件上传至服务器,使用mobaxterm界面中向上的绿色箭头图标,找到并上传文件。
接着,登录到root用户,并在`/usr/`目录下创建一个名为`Java`的文件夹。使用命令行执行以下操作:
`su root`
`mkdir/usr/java`
`cd/usr/java/`
将下载好的JDK文件解压到`/usr/java/`目录下。解压时,使用以下命令分别解压JDK 11和JDK 17的文件:
`tar-zxvf OpenJDK11U-idk_x64_linux_hotspot_11.0.20.1_1.tar.gz`
`tar-zxvf tarOpenJDK17U-jdk_x64_linux_hotspot_17.0.8.1_1.tar.gz`
接下来,配置环境变量。打开/etc/profile文件,并使用vi编辑器进行编辑。在文件末尾添加JDK 11的环境变量配置:
`export JAVA_HOME=/usr/java/jdk-11.0.20.1+1`
`export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar`
`export PATH=$JAVA_HOME/bin:$PATH`
保存并退出。然后执行`source/etc/profile`命令使环境变量生效。使用`java-version`命令检查JDK 11的安装情况。
重复上述步骤配置JDK 17的环境变量,只需将文件名修改为对应的JDK 17版本,并在配置文件中删除JDK 11的配置。保存并退出编辑后,重新执行`source/etc/profile`命令,确保环境变量更新。
要切换JDK版本,只需在配置文件中删除或注释指定版本的配置,并重新执行源命令以加载配置。通过多次执行上述步骤,可以实现在JDK 11和JDK 17之间的切换。
【UTC】CentOS7修改时区的正确姿势
整个地球分为二十四时区,每个时区都有自己的本地时间。在国际无线电通信场合,为了统一起见,使用一个统一的时间,称为通用协调时(UTC,Universal Time Coordinated)。
格林威治标准时间(Greenwich Mean Time)指位于英国伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。(UTC与GMT时间基本相同,本文中不做区分)
中国标准时间(China Standard Time)【GMT + 8 = UTC + 8 = CST】
夏令时(Daylight Saving Time)指在夏天太阳升起的比较早时,将时钟拨快一小时,以提早日光的使用。(中国不使用)
RTC(Real-Time Clock)或CMOS时钟,一般在主板上靠电池供电,服务器断电后也会继续运行。仅保存日期时间数值,无法保存时区和夏令时设置。
一般在服务器启动时复制RTC时间,之后独立运行,保存了时间、时区和夏令时设置。
在CentOS 6版本,时间设置有date、hwclock命令,从CentOS 7开始,使用了一个新的命令timedatectl。
Centos7修改系统时区timezone ,解决快、慢8小时问题
如果服务器用非 UTC的时间,时区转换很容易不一致,而且对于有 daylight saving的时区,每年多一小时少一小时的那两天,系统就会出现各种诡异现象。
服务器使用UTC时间,如要显示用户所在时区的本地时间,在客户端转化即可。
# timedatectl
我们可以看到,服务器使用的CST时间
# timedatectl set-timezone UTC
# timedatectl set-time"YYYY-MM-DD HH:MM:SS"
# timedatectl set-time "HH:MM:SS"
# timedatectl
我们可以看到,服务器时间类型更改为UTC了
# ll /etc/locatime
lrwxrwxrwx. 1 root root 25 1月 14 08:30 /etc/localtime->../usr/share/zoneinfo/UTC
实际上是做了一个将
文件 /etc/localtime 做了一个软连接到 /usr/share/zoneinfo/UTC
# ln -s /usr/share/zoneinfo/UTC /etc/localtime
ln:无法创建符号链接"/etc/localtime":文件已存在
# ln -sf /usr/share/zoneinfo/UTC /etc/localtime
做软连接时,需要加-f参数,强制覆盖,不然会显示软链接已存在
# timedatectl set-time"YYYY-MM-DD HH:MM:SS"
# timedatectl set-time "HH:MM:SS" //只设置时分秒
# timedatectl
# clock -w
# date -u //显示UTC时间
CentOS7修改时区的正确姿势
CentOS7上运行Java程序,发现程序生成的时间与当前时间匹配不上,还以为是数据停止更新了,后来发现没有正确使用修改时区的姿势,导致程序时区错误。
正确的修改CentOS7时区的姿势:
# ln -sf/usr/share/zoneinfo/Asia/Shanghai /etc/localtime
其他系统的修改文件可能是/var/etc/localtime.
错误的姿势:通过cp命令覆盖/etc/localtime时间
# cp-f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
通过cp命令修改时区,通过date, data-R命令显示的时区都是正确的,可是对于java程序而言,是错误的。
具体原因在于Java访问系统时区的方式上,可参见文章:
Java TimeZone和 Linux TimeZone问题
该文章很好的说明了Java访问系统时区的方式:
1.如有环境变量 TZ设置,则用TZ中设置的时区
2.在/etc/sysconfig/clock文件中找“ZONE”的值
3.如何2)都没,就用/etc/localtime和/usr/share/zoneinfo下的时区文件进行匹配,如找到匹配的,就返回对应的路径和文件名。
问题在于,如果使用cp命令来修改/etc/localtime文件,那么可能就会导致修改的不是/etc/localtime文件,而是原时区的文件内容。
/etc/localtime是通过符号链接链接/usr/share/zoneinfo下的文件,而java是通过文件名来确认时区的,data命令是通过文件内容确认时区的,这样就导致了data命令时区正确,而java的时区是错误的!
如上图所示:CentOS7是通过符号链接到/usr/share/zoneinfo/下的时区文件的,如果通过cp指令只会修改原时区文件内容,这样,通过date的系统命令,查看时间是OK的,可是java是通过读取文件名的方式确认时区信息的。所以时区还是纽约。