在自己的服务器上部署不同的项目做测试,由于不同的项目所用jdk版本不同,所以要在ubuntu上安装不同版本的jdk进行测试运行,当运行不同的项目就切换对应版本的jdk
注: 不采用修改环境变量配置文件配置jdk环境
安装jdk8
以下jdk安装命令,无需自己配置环境变量
sudo apt install openjdk-8-jre-headless //安装jre
sudo apt install openjdk-8-jdk-headless //安装jdk
//注:ubuntu16之后版本不自带jdk8以下版本,所以要在官网下载解压版本然后上传到服务器/usr/lib/jvm/路径下解压(上面命令下安装的jdk路径也是/usr/lib/jvm/)
据说Ubuntu16已经去除了openJdk-7的源,所以本次进行了windows下载jdk1.7-linux解压版本,上传到linux上解压(上传rz
命令,如报错,根据提示需安装apt-get install lrzsz
即可上传下载,sz
下载命令)
如下图(jdk1.7是解压版本,jdk1.8是ubuntu自带源下载的)
然后通过java -version
命令来查看jdk是版本,会发现是1.8版本,而不是手动解压的1.7版本(通过上面命令安装的jdk版本,系统会自动配置环境变量)
明明装了好几个版本的jdk,为什么现在获取的是8,不是7呢。那就找一下,java命令是怎么设置的,最终在/usr/bin路径下找到java命令(如下图)
我们会发现,这个文件不是一个普通的文件,而是一个链接,指向的是/etc/alternatives/路径下的java 文件,再查看/etc/alternatives/java文件,发现也是个链接
看该链接的指向,是不是有点熟悉了,对,就是我们上面提到的jdk的安装目录下的可执行文件。终于找到真正的主角了。到这里我们就明白了,原来是靠着链接文件来指向某一个版本的可执行文件来实现多版本配置的。那我们应该怎么改变这个指向呢,这就要用到update-alternatives命令了。
sudo update-alternatives --config java
注:列表里只显示通过本文最上面的命令安装的jdk版本,如果要把解压版本的jdk添加进列表里,就要使用sudo update-alternatives
命令添加,解压版本是不会出现在列表选项里面的,之所以会出现解压版本jdk1.7,是因为我之前通过sudo update-alternatives
命令已经添加进去了(如下)
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.7.0_80/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.7.0_80/bin/javac 300
最后通过sudo update-alternatives --config java
输入Selection下的编号回车,就已经切换成对应的jdk版本了
java -version //发现jdk已经切换成1.7了