Linux 向け Java(tm) バイナリのカーネルサポート v1.02 ---------------------------------------------------- Linux はすべてにおいて先んじています!他のすべての OS が、OS 内で Java バイナリの直接サポートについて議論をしている中、Linux はサポートをして います! 下記のことを行った後、他のプログラムと同じように Java アプリケーション とJava アプレットを実行できます - 1) まず、Linux 向け Java Developers Kit (JDK) をインストールしなければ なりません。Java-HOWTO は JDK の入手とインストールを説明しています。 この HOWTO は次のところから入手できます - [訳注:2001 年 12 月現在ではリンク切れになっていました。] ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/Java-HOWTO また、標準ではないクラス (アプリケーション自体と同じディレクトリに 含まれていないクラスのために) を利用している Java アプリケーションを使 用するために、合理的な CLASSPATH 環境変数を設定しなければなりません。 2) モジュールとして、あるいはカーネルに組込む (CONFIG_BINFMT_MISC) た めに、BINFMT_MISC をコンパイルし、適切に設定しなければなりません。 モジュールとしてコンパイルすることを選んだなら、kerneld で binfmt_misc をサポートすることが簡単にできないので、modprobe/insmod により手動でロードしなければなりません。 設定についてもっと知りたいのなら、Documentation ディレクトリにある ファイル 'binfmt_misc.txt' を読んでください。 [訳注:日本語訳が http://www.linux.or.jp/JF/JFdocs/kernel-docs-2.2/binfmt_misc.txt.html にあります。] 3) binfmt_misc に次の設定項目を追加してください (いますぐ binfmt_misc.txt を読むことをお勧めします) - Java アプリケーションのサポート - ':Java:M::\xca\xfe\xba\xbe::/usr/local/java/bin/javawrapper:' Java アプレットのサポート - ':Applet:E::html::/usr/local/java/bin/appletviewer:' もしくは、より選択的にしたい場合 - ':Applet:M:: を含むよう修正しなけれ ばなりません ('<' の文字から始まらなければなりません!)。 コンパイルされた Java プログラムは、下記のようなラッパースクリプト が必要です (これは Java にファイル名の取り扱いの不具合があるためで す)。ここでも、スクリプトと上記で与えた設定文字列の両方のパス名を見 直してください。 ====================== Cut here =================== #!/bin/bash # /usr/local/java/bin/javawrapper - binfmt_misc/java 用ラッパー CLASS=$1 # クラス名がリンクなら、それに従います (これをもっと簡単に行うことがで # きるかも - 方法は?) if [ -L "$1" ] ; then CLASS=`ls --color=no -l $1 | tr -s '\t ' ' ' | cut -d ' ' -f 11` fi CLASSN=`basename $CLASS .class` CLASSP=`dirname $CLASS` FOO=$PATH PATH=$CLASSPATH if [ -z "`type -p -a $CLASSN.class`" ] ; then # クラスは CLASSPATH 内にありません if [ -e "$CLASSP/$CLASSN.class" ] ; then # クラスディレクトリを CLASSPATH に付足します if [ -z "${CLASSPATH}" ] ; then export CLASSPATH=$CLASSP else export CLASSPATH=$CLASSP:$CLASSPATH fi else # あ〜!すぐにシンボリックリンクを作成しなければなりま # せん - まったくもって見苦しい、たとえば、「設定変更 # をしなければなりません」というようなメッセージを出力 # します。 echo "Hey! This is not a good setup to run $1 !" exit 1 fi fi PATH=$FOO shift /usr/local/java/bin/java $CLASSN "$@" ====================== Cut here =================== さて、実行するために .class や .html ファイルを chmod -x してください。 パスに Java プログラムを追加するには、.class 拡張子を省略するために /usr/bin (もしくは好みの別の場所) 内に、メインの .class ファイルのシン ボリックファイルを置くのが最良です。オリジナルの .class ファイルを含む ディレクトリは 実行の間、あなたの CLASSPATH に追加されることになります。 新しい設定をテストするために、次の単純な Java アプリケーションを入力 し、その名前を "HelloWorld.java" としてください - class HelloWorld { public static void main(String args[]) { System.out.println("Hello World!"); } } さて、次のようにアプリケーションをコンパイルしてください - javac HelloWorld.java 次のコマンドでバイナリファイルに実行許可を設定してください - chmod 755 HelloWorld.class そして実行してください - ./HelloWorld.class Java アプレットを実行するには、chmod で *.html ファイルに実行ビットを 立て、次のコマンドを実行してください - ./Applet.html 著者:Brian A. Lantz, brian@lantz.com binfmt_misc に関する更新:Richard Gther 日本語訳:野本浩一 校正:中谷千絵さん