安装环境:CentOs7.4
jdk版本:1.8.0
1下载软件,地址:http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html
提供了rpm,tar.gz两种格式的安装软件,以及它们的安装方法。
2使用tarball安装
解压后没有找到configure文件,不进行./configure和make也能运行。官网上的安装说明也只写了解压这一步。地址:https://docs.oracle.com/javase/8/docs/technotes/guides/install/linux_jdk.html#A1098871
将tar.gz文件解压缩在/usr/local/新建一个自己安装软件的文件夹即可,需设置环境变量;
指令:tar -zxv -f tar.gz文件路径 -C 自定义安装路径
tarball无法用rpm查询软件安装信息,可以用java -version来查询。
3使用rpm安装
指令:rpm -ivh rpm文件路径 --prefix 自定义安装路径
注:--prefix后面的路径必须以/开头。我的安装路径为/usr/local/myprogramefile。
无需设置环境变量。
安装完成时显示了一句:ln: 无法创建符号链接"/usr/java/jdk1.8.0_161": 没有那个文件或目录,看来/usr/java是默认的安装路径。
用rpm -q jdk或java查询是否安装,都显示“未安装软件包”。这里不理解,我明明已经装了jdk,用rpm -qa | grep jdk则能够显示安装的jdk信息。为什么rpm -q直接查询jdk会查不到,难道jdk不是软件名吗?
使用rpm -qa | grep jdk获得全称jdk1.8-1.8.0_161-fcs.i586后再用这个全称进行rpm查询可以查询到了,查询了information后得到软件名称原来是jdk1.8
,用这个名称终于可以正常使用rpm相关指令了。
补充,也可用java -version来查询。
通过tarball安装方式不设环境变量的话输入指令就要打绝对路径了,发现通过rpm安装就可以直接使用指令,是否rpm会自动设置环境变量?
打开/etc/profile并没有找到关于jdk的路径设置,$PATH如下: /usr/lib/qt-3.3/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/***/.local/bin:/home/***/bin,在这些路径中,发现/bin、/usr/bin、/etc(不在$PATH里)下多出了javac的指令链接,可知安装后自动将指令链接放在了/bin、/usr/bin、下,但是/usr/local下的所有文件夹里都没有jdk的相关指令和其链接。由于jdk的很多链接(不知道是不是全部)都放进了/bin、/usr/bin,所以即使不设置环境变量,也照样能运行。
另:1)安装系统时默认安装了openjdk,所以/bin、/usr/bin下本来就有java,安装jdk后,应该是覆盖了。
2)/bin是/usr/bin的链接。
3)发现刚开始学java时没有用开发工具还是有点用的,在安装时确认是否能够运行就方便了。
3卸载
1)使用rpm -e
指令:rpm -e jdk1.8,没有相依性问题。
2)对于tar.gz安装方式,直接删除安装软件的目录即可。
4环境变量设置
环境变量有三种设置方法:
1)对所有用户永久有效:修改/etc/profile(添加)
2)对该用户永久有效:修改~/.bashrc或~/.bash.profile(添加)
3)对当前shell/bash有效:直接运行export定义
JAVA_HOME=/usr/local/myprogramfile/jdk1.8.0_161
JAVA_LIB=$JAVA_HOME/lib
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_LIB/dt.jar:$JAVA_LIB/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH
修改完后运行source /etc/profile使其生效。
注:CLASSPATH中的那个“.”千万别漏了,不然运行java的时候可能会报“错误: 找不到或无法加载主类”。
如果设置环境变量前有非root用户的终端正在使用,需要重新登录或者切换帐号再切回来,该帐号才可使用jdk,否则该帐号识别出来的环境变量还是修改前的。