在某些情况下我们需要在Linux安装不同版本的JDK,同时为了不影响各用户的使用,有时不方便建立全局的JAVA_HOME变量,解决的方法就是在程序的内部建立JAVA_HOME变量,比如在安装Hadoop时,一般都需要在hadoop-env.sh文件上指定JAVA_HOEM。
(下面的信息部分拷贝自《hadoop技术内部:深入解析yarn架构设计》,没必要的步骤加了注释。)
步骤1 安装JDK。
将下载的.bin 文件复制到Linux 的某个目录下,比如/usr/lib/jvm/,然后在Shell 中执行以下命令为该文件添加可执行权限:
chmod +x /usr/lib/jvm/jdk1.6.0_25.bin
然后执行以下命令安装JDK:
sudo /usr/lib/jvm/jdk1.6.0_25.bin
之后将会出现安装信息,直至屏幕显示要求按下回车键,此时输入回车键后,会把
JDK 解压到文件夹jdk1.6.0_25 中。至此,JDK 已安装完毕,下面进行配置。
步骤2 配置JDK。
修改/etc/profile 文件,在里面添加以下内容:
export JAVA_HOME=/usr/lib/jvm/jdk1.6.0_25
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
(
注意:配置环境变量是不必须的,尤其当不同应用在同一台机器上需要使用不同版本的JDK时。)
输入以下命令使配置生效:
source /etc/profile
步骤3 修改默认JDK 版本。
Ubuntu 中可能会有默认的JDK,如openjdk,因而我们需要将自己安装的JDK 设置为
默认JDK 版本,执行下面的代码:
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.6.0_25/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.6.0_25/bin/javac 300
sudo update-alternatives --install /usr/bin/jar jar /usr/lib/jvm/jdk1.6.0_25/bin/jar 300
sudo update-alternatives --install /usr/bin/javah javah /usr/lib/jvm jdk1.6.0_25/bin/javah 300
sudo update-alternatives --install /usr/bin/javap javap /usr/lib/jvm/jdk1.6.0_25/bin/javap 300
然后执行以下代码选择我们安装的JDK 版本:
sudo update-alternatives --config java
(
注意:这一步很重要。)
步骤4 验证JDK 是否安装成功。
重启Shell 终端,执行java -version 命令,若输出以下内容,则说明安装成功:
java version "1.6.0_25"
Java(TM) SE Runtime Environment (build 1.6.0_25-b06)
Java HotSpot(TM) Client VM (build 20.0-b11, mixed mode, sharing)
Example
在CentOS下更新JDK到1.7如下:
rpm -ivh jdk-7u79-linux-x64.rpm;
sudo update-alternatives --install /usr/bin/java java /usr/java/jdk1.7.0_79/bin/java 300;
sudo update-alternatives --install /usr/bin/javac javac /usr/java/jdk1.7.0_79/bin/javac 300
;
sudo update-alternatives --install /usr/bin/jar jar /usr/java/jdk1.7.0_79/bin/jar 300;
sudo update-alternatives --install /usr/bin/javah javah /usr/java/jdk1.7.0_79/bin/javah 300;
sudo update-alternatives --install /usr/bin/javap javap /usr/java/jdk1.7.0_79/bin/javap 300;
sudo update-alternatives --config java;