CentOS - Java インストール!
Updated:
CentOS 6.2 にはデフォルトで GNU 版の Java が用意されていますが、Oracle 版の Java をインストールして使用可能にする設定をしました。
CentOS への Java のインストールについての情報は結構ありますが、インストールしただけでは GNU 版の Java が有効になったままで Oracle 版の Java が使えません。
作業記録
0. 前提条件
- CentOS 6.2 (i386) での作業を想定。
- GNU 版 Java が導入済みでなければ、Java の新規インストールだけで済む。
- GNU 版 Java でよいのなら、Java の新規インストールもしなくてよい。
1. GNU 版 Java の確認
GNU 版 Java が導入済みか否かの確認をする。
# rpm -qa | grep gcj
java-1.5.0-gcj-1.5.0.0-29.1.el6.i686
libgcj-4.4.6-3.el6.i686
GCJ(The GNU Compiler for Java) が導入済みなのがわかる。
2. Oracle 版 Java アーカイブの準備
Java SE Downloads から “jdk-7u5-linux-i586.rpm”(当記事執筆時点で最新)をダウンロードして適当な場所に置く。
3. Oracle 版 Java のインストール
以下のコマンドでインストールする。
# rpm -Uvh jdk-7u5-linux-i586.rpm
以下のコマンドでインストールされたか確認する。
# rpm -qa | grep jdk
jdk-1.7.0_05-fcs.i586
4. Java のバージョン確認
使用可能な Java のバージョンを確認してみる。
# java -version
java version "1.5.0"
gij (GNU libgcj) version 4.4.6 20110731 (Red Hat 4.4.6-3)
Copyright (C) 2007 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
GNU 版の Java が有効になっていて、独自にインストールした JDK が有効になっていないことが分かる。
5. alternatives で確認
同時にインストールされた同機能を提供するソフトやバージョンの異なるソフトを管理するためのユーティリティ alternatives を使って Java について確認してみる。
# alternatives --display java
java - ステータスは手動です。
リンクは現在 /usr/lib/jvm/jre-1.5.0-gcj/bin/java を指しています。
/usr/lib/jvm/jre-1.5.0-gcj/bin/java - 優先項目 1500
スレーブ keytool: /usr/lib/jvm/jre-1.5.0-gcj/bin/keytool
スレーブ rmiregistry: /usr/lib/jvm/jre-1.5.0-gcj/bin/rmiregistry
スレーブ jre_exports: /usr/lib/jvm-exports/jre-1.5.0-gcj
スレーブ jre: /usr/lib/jvm/jre-1.5.0-gcj
現在の「最適」バージョンは /usr/lib/jvm/jre-1.5.0-gcj/bin/java です。
alternatives には GNU 版の Java しか登録されていないことが分かる。
6. alternatives に追加
alternatives に独自にインストールした JDK を追加する。 優先項目の値は大きいほど優先度が上がるので、既存の 1.5.0 が 1500 になっているのに合わせて、1700 とした。
# alternatives --install /usr/bin/java java /usr/java/jdk1.7.0_05/bin/java 1700
alternatives についての詳細は “–help” でご確認ください。
7. alternatives で再度確認
alternatives を使って Java について確認してみる。
# alternatives --display java
java -ステータスは自動です。
リンクは現在 /usr/java/jdk1.7.0_05/bin/java を指しています。
/usr/lib/jvm/jre-1.5.0-gcj/bin/java - 優先項目 1500
スレーブ keytool: /usr/lib/jvm/jre-1.5.0-gcj/bin/keytool
スレーブ rmiregistry: /usr/lib/jvm/jre-1.5.0-gcj/bin/rmiregistry
スレーブ jre_exports: /usr/lib/jvm-exports/jre-1.5.0-gcj
スレーブ jre: /usr/lib/jvm/jre-1.5.0-gcj
/usr/java/jdk1.7.0_05/bin/java - 優先項目 1700
スレーブ keytool: (null)
スレーブ rmiregistry: (null)
スレーブ jre_exports: (null)
スレーブ jre: (null)
現在の「最適」バージョンは /usr/java/jdk1.7.0_05/bin/java です。
独自にインストールした Java が追加され、さらに「最適」バージョンに設定されたことが分かる。
8. alternatives の設定
どちらの Java を有効にするかを設定する。
# alternatives --config java
2 プログラムがあり 'java' を提供します。
選択 コマンド
-----------------------------------------------
+ 1 /usr/lib/jvm/jre-1.5.0-gcj/bin/java
* 2 /usr/java/jdk1.7.0_05/bin/java
Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:2
9. Java バージョンの再確認
使用可能な Java のバージョンを確認してみる。
# java -version
java version "1.7.0_05"
Java(TM) SE Runtime Environment (build 1.7.0_05-b05)
Java HotSpot(TM) Client VM (build 23.1-b03, mixed mode, sharing)
独自にインストールした Java のバージョンが表示された。
10. テストソース作成
コンパイル・実行テスト用のソースを作成する。 【 ファイル名:HelloWorld.java 】
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
11. コンパイル&実行
以下のようにコンパイル・実行する。
# javac HelloWorld.Java
# java HelloWorld
Hello World
その他
ちなみに、GNU 版の Java が有効のままだと、コンパイルができても実行するとエラーになる。
# java HelloWorld
Exception in thread "main" java.lang.ClassFormatError: HelloWorld (unrecognized class file version)
at java.lang.VMClassLoader.defineClass(libgcj.so.10)
at java.lang.ClassLoader.defineClass(libgcj.so.10)
at java.security.SecureClassLoader.defineClass(libgcj.so.10)
at java.net.URLClassLoader.findClass(libgcj.so.10)
at gnu.gcj.runtime.SystemClassLoader.findClass(libgcj.so.10)
at java.lang.ClassLoader.loadClass(libgcj.so.10)
at java.lang.ClassLoader.loadClass(libgcj.so.10)
at gnu.java.lang.MainThread.run(libgcj.so.10)
以上。
Comments