月別アーカイブ: 2013年4月

Java SE 7 (JDK 1.7.x) のインストール (CentOS 6.3 64bit)

過去の記事を最新情報で更新しました。
CentOS は 6.3 に、Java (JDK) は Java SE 7u21 (Java 7) に上がっています。

1. Java SE Development Kit (JDK) のダウンロード

Oracle (旧 Sun) のダウンロードページ Java SE Downloads から最新の JDK をダウンロードします。

JDK の「DOWNLOAD」ボタンを選択し、「Accept License Agreement」をチェックします。
64bit Linux 用の「Linux x64」は tar.gz 版と RPM 版がありますが、今回は RPM 版にしました。

本日時点の最新版は jdk-7u21-linux-x64.rpm (85,388,149 byte) でした。

2. Java SE Development Kit (JDK) のインストール

2.1. JDK のインストール

Java 6 の時代と異なり、rpm コマンドだけでインストールは完了します。

# rpm -ivh jdk-7u21-linux-x64.rpm
準備中...                ########################################### [100%]
   1:jdk                    ########################################### [100%]
Unpacking JAR files...
        rt.jar...
        jsse.jar...
        charsets.jar...
        tools.jar...
        localedata.jar...

2.2. JDK のインストール先

Java のモジュールは /usr/java 配下に展開されています。

$ ls -l /usr/java/
合計 4
lrwxrwxrwx. 1 root root   16  4月 22 20:12 2013 default -> /usr/java/latest
drwxr-xr-x. 8 root root 4096  4月 22 20:12 2013 jdk1.7.0_21
lrwxrwxrwx. 1 root root   21  4月 22 20:12 2013 latest -> /usr/java/jdk1.7.0_21

実態は /usr/java/jdk1.7.0_21 配下にインストールされていて、2つのリンク default と latest が作成されています。

3. alternatives 設定

(*) alternatives を使用していない場合 → @see 「4. 環境変数設定」

3.1. パスの確認

インストールしただけではパスが通っていないため Java 7 は動作しません。
事前に OpenJDK をインストールしていると、OpenJDK へのパスが有効なままです。

$ java -version
java version "1.6.0_24"
OpenJDK Runtime Environment (IcedTea6 1.11.8) (rhel-1.56.1.11.8.el6_3-x86_64)
OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode)

このパスは /usr/bin 配下で定義されています。

$ ls -l /usr/bin/java*
lrwxrwxrwx. 1 root root 22  4月  6 16:38 2013 /usr/bin/java -> /etc/alternatives/java
lrwxrwxrwx. 1 root root 27  4月 22 20:12 2013 /usr/bin/javac -> /usr/java/default/bin/javac
lrwxrwxrwx. 1 root root 29  4月 22 20:12 2013 /usr/bin/javadoc -> /usr/java/default/bin/javadoc
lrwxrwxrwx. 1 root root 28  4月 22 20:12 2013 /usr/bin/javaws -> /usr/java/default/bin/javaws

java コマンドのみ /etc/alternatives/java へのリンクとなっているので、Java 7 にパスを通すには alternatives の設定を変更する必要があります。

3.2. alternatives 設定確認

alternatives コマンドで現在の設定を確認します。

# alternatives --display java
java -ステータスは自動です。                   
リンクは現在 /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java を指しています。
/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java - 優先項目 16000

~ 略 ~

現在の「最適」バージョンは /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java です。

/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java が 優先度 16000 で登録されていることが確認できます。

3.3. alternatives への Java 7 の追加

Java 7 もalternatives に追加します。

優先度は Java のバージョンが 7u21 (JDK1.7.0_21) なので 17021 とします。

# alternatives --install /usr/bin/java java /usr/java/default/bin/java 17021

alternatives のパラメータの意味は以下の通りです。

パラメータ1 : 登録するリンク ex.) /usr/bin/java
パラメータ2 : 登録先する名前 ex.) java
パラメータ3 : 実際に実行するパス ex.) /usr/java/default/bin/java, /usr/java/jdk1.7.0_21/bin/java
パラメータ4 : 優先度 ex.) 17021

3.4. alternatives 変更結果確認

alternatives コマンドで変更後の設定を確認します。

# alternatives --display java
java -ステータスは自動です。                   
リンクは現在 /usr/java/default/bin/java を指しています。
/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java - 優先項目 16000
/usr/java/default/bin/java - 優先項目 17021

~ 略 ~

現在の「最適」バージョンは /usr/java/default/bin/java です。

/usr/java/default/bin/java が 優先度 17021 で追加されました。
有効な java も優先度が一番高い /usr/java/default/bin/java となっています。

3.5. 使用する Java の変更

alternatives から使用する Java を切り替えることが可能です。

# alternatives --config java

2 プログラムがあり 'java' を提供します。

  選択       コマンド
-----------------------------------------------
   1           /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java
*+ 2           /usr/java/default/bin/java

Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:

「+」が現在使用中の Java、「*」が優先度が一番高い Java です。

3.6. 動作確認

java -version コマンドで alternatives が正しく設定されているかを確認します。

$ java -version
java version "1.7.0_21"
Java(TM) SE Runtime Environment (build 1.7.0_21-b11)
Java HotSpot(TM) 64-Bit Server VM (build 23.21-b01, mixed mode)

4. 環境変数設定

Tomcat 等、環境変数「JAVA_HOME」を参照するアプリケーションを使用する場合は別途定義する必要があります。

~/.bash_profile へ追加

# Java home
export JAVA_HOME=/usr/java/default

ここで JAVA_HOME を /usr/java/default としているのは、将来、最新の JDK をインストールした場合でもパス設定を変更不要とするためです。

変更した ~/.bash_profile を有効化します。

$ source ~/.bash_profile

[ END ]