Sunの提供するJavaを使う  Hrt .NET Linux

Linux上でSunのJava2SE Development Kit (JDK) を利用する方法を記述します。
しかしながら最近のLinuxのGCC(GNU Compiler Collection) にはGJCというJavaコンパイラが組み込まれています。

[root@localhost ~]# java -version
java version "1.4.2"
gcj (GCC) 3.4.4 20050721 (Red Hat 3.4.4-2)
Copyright (C) 2004 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.

Javaの開発環境が最初から用意されていて一見よさそうに見えますが、Javaのバージョンや互換性の問題、自分の知らない設定がされているかもしれないので、Sunが提供しているLinux用のJavaを自分でインストールしたほうがよいと思います。


0.JDKのダウンロード
SunのJavaのサイトhttp://java.sun.com/からJ2SE 5.0(日本語)へ行き、JDKのjdk-1_5_0_05-linux-i586.binをダウンロードしてきます。
ダウンロードする際に、ライセンスについての同意を求められるのでAcceptにチェックをしましょう。


1.JDKのインストール
jdk-1_5_0_05-linux-i586.binをダウンロードしたらこのファイルに実行権限を与え、実行します。

[root@localhost ~]# chmod +x jdk-1_5_0_05-linux-i586.bin
[root@localhost ~]# ./jdk-1_5_0_05-linux-i586.bin

実行するとライセンスに関する記述がでてくるので、軽く目を通しながらすすみます。
このときqを押すと、ライセンスの記述部分を省略することができます。
ライセンス部分の記述がおわるとライセンスに同意するかを聞かれるので、yesとします。

Do you agree to the above license terms? [yes or no]
yes

こうするとJavaのインストール(解凍)が開始されます。
インストールが終了すると、jdk1.5.0_05ディレクトリが作成されるので、jdk1.5と名前を変更します。
みんなで使うことを考えると、jdk1.5ディレクトリを/usr/local/などに移動すると良いと思います。

[root@localhost ~]# mv jdk1.5.0_05 jdk1.5
[root@localhost ~]# mv jdk1.5 /usr/local/


2.パスの設定
従来は環境変数を/usr/local/jdk1.5/binに指定すればそれで事は済みました。

#/etc/profile or ~/.bash_profile or ~.bashrc
export PATH=$PATH:/usr/local/java1.5/bin

しかし最初にも書いたように、最近のGCCではJavaが使えるようになっており、このまま環境変数を設定してしまうとGCCのJavaが実行されてしまいます。
これを解決する3つの方法を記述します。


2−1.環境変数PATHの記述位置
ここでは/etc/profileに設定するとします。
実行するプログラムへのパスはPATHという環境変数に入っていて、GJCへのパスもこれにあります。
そこでこのパスに/usr/local/jdk1.5/binを追加します。
一見、上でやっていることと変わりませんが、$PATHの後に付けるのではなく、$PATHの前に付けます。

export PATH=$PATH:/usr/local/java1.5/bin

これは前に書かれたパスの方が優先されるためです。
(優先されるのか、後から読まれるのかはわかりません)
なおファイル内での記述位置は、

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC

の前くらいにすればいい。

# /etc/profile

# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc

# 省略

export PATH=/usr/local/jdk1.5/bin:$PATH # Javaコマンドのパスを追加
export JAVA_HOME=/usr/local/jdk1.5 # Javaのインストールディレクトリ
export CATALINA_HOME=/usr/local/tomcat5 # Tomcatのインストールディレクトリ
export CLASSPATH=.:$CATALINA_HOME/common/lib/servlet-api.jar:$CATALINA_HOME/common/lib/jsp-api.jar: # JSP/ServletのAPIを追加

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC

for i in /etc/profile.d/*.sh ; do
if [ -r "$i" ]; then
. $i
fi
done

unset i
unset pathmunge

これを設定して/etc/profileをsourceコマンドで実行します。

[root@localhost ~]# source /etc/profile


2−2.javaコマンドのパスを切り替える
/usr/sbin/alternativesを使い、javaやjavacのコマンドパスを変えます。
まずは/usr/local/jdk1.5/bin/java, javacのパスを追加します。

[root@localhost ~]# /usr/sbin/alternatives --install /usr/bin/java java /usr/local/jdk1.5/bin/java 100
[root@localhost ~]# /usr/sbin/alternatives --install /usr/bin/javac javac /usr/local/jdk1.5/bin/javac 100

最後の100は優先度なので適当でかまいません。
これでjava, javacのコマンドパスの侯補になったので、/usr/sbin/alternatives --config javaを実行し、追加したjdk1.5のパスを指すように設定します。
パスの指定は、表示される数字を指定します。

[root@localhost ~]# /usr/sbin/alternatives --config java

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

選択 コマンド
-----------------------------------------------
*+ 1 /usr/lib/jvm/jre-1.4.2-gcj/bin/java
2 /usr/local/jdk1.5/bin/java

Enterを押して現在の選択[+]を保持するか、選択番号を入力します:2
[root@localhost ~]# /usr/sbin/alternatives --config java

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

選択 コマンド
-----------------------------------------------
* 1 /usr/lib/jvm/jre-1.4.2-gcj/bin/java
+ 2 /usr/local/jdk1.5/bin/java

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

これでjavaのパスがjdk1.5の方になります。
javacも同様におこないます。


2−3.コマンドを強引に変える
GCCのjavaにSunのJavaを強引にコピーします。
よろしくない方法なので、説明は省きます。

3.java -versionで以下のような情報が出てくればOKです。

[root@localhost ~]# java -version
java version "1.5.0_05"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_05-b05)
Java HotSpot(TM) Client VM (build 1.5.0_05-b05, mixed mode, sharing)


Copyright (C) 2004 - 2005 Hrt@HMN, All rights reserved.