FreeBSD QandA 2611
Q. Java2 SDK 1.3 (jdk13) をインストールする方法を教えてください。
A. 現在 FreeBSD 上で動作し、ports となっている jdk13 の実装は以下の5種類です。
java/linux-sun-jdk13 (Linux版・バイナリ配布)
java/linux-ibm-jdk13 (Linux版・バイナリ配布)
java/linux-blackdown-jdk13 (Linux版・バイナリ配布)
java/diablo-jdk13 (FreeBSD版・バイナリ配布)
java/jdk13 (FreeBSD版・ソースからのビルドが必要)
linux-sun-jdk13, linux-ibm-jdk13, linux-blackdown-jdk13 は
Linux版バイナリのため、動作させるには Linux emulation を有効にしなければ
なりません。
diablo-jdk13 は The FreeBSD Foundation が Sun からの正式なライセンスを受け
バイナリ配布している、FreeBSD ネイティブな JDK です。
ただし、バイナリ互換性の問題により、現在のところ FreeBSD 4.x 上でしか
動作させることができません。
java/jdk13 はソースからビルドする、FreeBSD ネイティブな JDK です。
FreeBSD 5.x 上では diablo-jdk13 は動作しないため、ネイティブな JDK が
必要な場合はこちらをインストールする必要があります。
また、diablo-jdk13 では native threads や HotSpot がサポートされていないので、
これらの機能を使用したい場合にも java/jdk13 をインストールする必要があります。
java/jdk13 のインストールの流れを簡単にまとめると以下のようになります。
1. ビルド用の jdk をインストールする。
2. jdk のソース・FreeBSD 用のパッチを /usr/ports/distfiles/ に置く。
3. ports の java/jdk13 を make install する。
以下、個別に解説します。
1. ビルド用の jdk をインストールする。
java/jdk13 をビルドするためには、bootstrap となる JDK が
別途必要となります。
(一度 java/jdk13 をビルドしてしまえば、bootstrap 用 JDK は
アンインストールしても構いません。)
FreeBSD 4.x では java/diablo-jdk13 をインストールしておきます。
FreeBSD 5.x では Linux emulation を有効にしたうえで、
java/linux-blackdown-jdk13 をインストールしておきます。
Linux emulation を有効にする方法は、ハンドブックを参照してください。
<URL:http://www.jp.freebsd.org/www.FreeBSD.org/doc/ja_JP.eucJP/books/handbook/linuxemu-lbc-install.html>
2. jdk のソース・FreeBSD 用のパッチを /usr/ports/distfiles/ に置く。
jdk13 を ports からインストールしようとすると以下のようにエラーと
なります。
# cd /usr/ports/java/jdk13
# make
===> jdk-1.3.1pX_Y :
Because of licensing restrictions, you must fetch the source distribution
manually. Please access http://www.sun.com/software/java2/download.html
with a web browser and follow the "Download" link for the
"Java(TM) SDK 1.3.1". You will be required to log in and register,
but you can create an account on this page. After registration and
accepting the Sun Community Source License, select "J2SESDK" and
download the source file, j2sdk-1_3_1-src.tar.gz. Please place this
file in /usr/ports/distfiles.
つまりライセンスの制限により、Sun のサイトからJDK のソースを手動で
ダウンロードし、/usr/ports/distfiles/ にファイルを置く必要があると
いうことです。ソースのダウンロードにはユーザ登録が必要です (上記
ページで登録可能。ちなみに無料)。
メッセージに従い、j2sdk-1_3_1-src.tar.gz を /usr/ports/distfiles/
に置き、再度 make します。
# cd /usr/ports/java/jdk13
# make
===> jdk-1.3.1pX_Y :
The source distribution exists on your system, but due to
licensing restrictions you still need to download the
patchset, bsd-jdk131-patches-Z.tar.gz, from
http://www.eyesbeyond.com/freebsddom/java/jdk13.html.
Please place the patchset in /usr/ports/distfiles.
Sun のソースをそのまま FreeBSD でコンパイルすることはできず、
FreeBSD 用のパッチをあてる必要があります。このパッチもライセンスの
制限により上記サイトから手動でダウンロードする必要があります。
ダウンロードした bsd-jdk131-patches-Z.tar.gz を /usr/ports/distfiles/ に
置き、再度 make します。
3. java/jdk13 を make install する。
FreeBSD 5.1〜5.2-RELEASE:
# cd /usr/ports/java/jdk13
# make WITH_LINUX_BOOTSTRAP=yes install
注: 単に make install とすると、以下のエラーが発生します。
ERROR: Your BOOTDIR environment variable does not point
to a valid Java 2 SDK for bootstrapping this build.
A Java 2 SDK 1.3.1 build must be bootstrapped against any
1.3 build. Please update your ALT_BOOTDIR setting, or
just unset it, and start your build again.
JDK をコンパイルするために bootstrap となる JDK が
必要となるのですが、WITH_LINUX_BOOTSTRAP=yes とする
ことで java/linux-blackdown-jdk13 が bootstrap として
使用されます。
FreeBSD 5.2.1-RELEASE 以降:
# cd /usr/ports/java/jdk13
# make install
注: FreeBSD 5.2.1-RELEASE 以降でも bootstrap の JDK が
必要なのは同じですが、ports 内部で自動的に
WITH_LINUX_BOOTSTRAP=yes とセットされますので、
make install だけで OK です。
最後に、確認のため Java アプリケーションの Hello World を
コンパイル・実行してみましょう。java/jdk13 のバイナリは
/usr/local/jdk1.3.1/bin/
にインストールされます。
ソース作成
% cat HelloWorld.java
public class HelloWorld {
public static void main(String[] args){
System.out.println("Hello World");
}
}
コンパイル
% /usr/local/jdk1.3.1/bin/javac HelloWorld.java
HelloWorld.class が生成されたことを確認
% ls ls HelloWorld.*
HelloWorld.class HelloWorld.java
実行
% /usr/local/jdk1.3.1/bin/java HelloWorld
Hello World
間違い・追加情報を見付けた場合は、
修正案の投稿のしかた を読んだ上で、
QandA@jp.FreeBSD.org まで
お知らせください。