FreeBSDでJDK1.3.1を使おう!

FreeBSDのJava環境はJDK1.1.8(正式版)とJDK1.2.2(ベータ版)がありますが、世の中はすでにJ2SEとか言っている上に、すでにSunからJDK1.3.1がリリースされていたりします。ラッキーなことに?Linux版もリリースされているので、この際、Linux版のJDK1.3.1をFreeBSDで使えるようにしてしまうことにします。

  1. 材料
  2. インストール
    とりあえず、linux_base-6.1はportから放り込むことにします。
    # cd /usr/ports/emulators/linux_base
    # make install clean
    
    準備はこれでOK!
    いよいよJDK1.3.1 for Linuxのインストールです。とりあえず、モノをここから落としてきましょう。ダウンロードしてくるのはGNUZIP Tar shell scriptの方です。RedHat RPM shell scriptではないので気をつけて下さい。
    次に以下のようにしてインストールを行います。
    # cd /path/to/install/directory (インストールしたいディレクトリの親ディレクトリに移動します。)
    # sh /somewhere/j2sdk-1_3_1-linux-i386.bin
    
    これでJDK1.3.1がインストールされます。とりあえず実行してみると
    % $JAVA_HOME/bin/java -version
    expr: syntax error
    java version "1.3.1"
    Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.1-b24)
    Java HotSpot(TM) Client VM (build 1.3.1-b24, mixed mode)
    Java HotSpot(TM) Client VM warning: cannot uninstall alt signal stack
    Java HotSpot(TM) Client VM warning: cannot uninstall alt signal stack
    
    と言われてムカつくのでいろいろ調べてみると、上で実行したjavaの実体は.javawrapperであることが分かります。もう少し調べてみると、このファイルはシェルスクリプトらしいということが分かるので、以下のようにコマンドを実行してみます。
    % sh -x $JAVA_HOME/bin/java -version
    
    メッセージがたくさんコンソールにでてきますが、これを追っていくとここでexprを実行しているというのが分かります。そこで、次はexprがどこにあるのかを調べます。モノはLinuxのなので、当然、/usr/compat/linux以下を探すと/usr/compat/linux/usr/bin/exprが見つかりました。そこで、.javawrapperを次のように書き換えてしまうことにします。
    % cd $JAVA_HOME/bin
    % diff -c .java_wrapper.org  .java_wrapper
    *** .java_wrapper.org   Sun Jun 10 02:36:57 2001
    --- .java_wrapper       Sun Jun 10 02:25:18 2001
    ***************
    *** 34,41 ****
      # Resolve symlinks. See 4152645.
      while [ -L "$PRG" ]; do
          ls=`ls -ld "$PRG"`
    !     link=`expr "$ls" : '.*-> \(.*\)$'`
    !     if expr "$link" : '/' > /dev/null; then
            PRG="$link"
          else
            PRG="`dirname $PRG`/$link"
    --- 34,41 ----
      # Resolve symlinks. See 4152645.
      while [ -L "$PRG" ]; do
          ls=`ls -ld "$PRG"`
    !     link=`/usr/compat/linux/usr/bin/expr "$ls" : '.*-> \(.*\)$'`
    !     if /usr/compat/linux/usr/bin/expr "$link" : '/' > /dev/null; then
            PRG="$link"
          else
            PRG="`dirname $PRG`/$link"
    %
    
    ここでもう一度実行してみると、
    % $JAVA_HOME/bin/java -version
    java version "1.3.1"
    Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.1-b24)
    Java HotSpot(TM) Client VM (build 1.3.1-b24, mixed mode)
    Java HotSpot(TM) Client VM warning: cannot uninstall alt signal stack
    Java HotSpot(TM) Client VM warning: cannot uninstall alt signal stack
    
    かなりよくなりました。でも、まだHotSpot関連のメッセージが出ています。FreeBSDではJDK1.3.1 for LinuxのHotSpotはうまく動かないそうです。なので、HotSpotなしで実行してみます。
    % $JAVA_HOME/bin/java -classic -version
    java version "1.3.1"
    Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.1-b24)
    Classic VM (build 1.3.1-b24, green threads, nojit)
    
    とりあえずはよさそうです。ただ、JIT(Just In Time)コンパイラなしは悲しいですね。blackdownの最新のJDKは1.3.0なので、1.3.1が出たらこちらに乗り換えてshuJITを入れて使ってみることにします。
  3. テスト
    ここでJAVA_HOME、pathを設定して実際にデモを動かしてみましょう。
    % setenv JAVA_HOME /path/to/installed/directory
    % set path=($path $JAVA_HOME/bin)
    
    これで設定はOKです。次にデモを動かしてみます。
    % cd $JAVA_HOME/demo/jfc/Java2D
    % java -classic -jar Java2Demo.jar
    Font specified in font.properties not found [--symbol-medium-r-normal--*-%d-*-*-p-*-adobe-fontspecific]
    Font specified in font.properties not found [--symbol-medium-r-normal--*-%d-*-*-p-*-adobe-fontspecific]
      :
    java.awt.AWTException: cannot open XIM
          at sun.awt.motif.X11InputMethod.(X11InputMethod.java:148)
          at sun.awt.motif.X11InputMethodDescriptor.createInputMethod(X11InputMethodDescriptor.java:78)
          at sun.awt.im.InputContext.getInputMethodInstance(InputContext.java:691)
          at sun.awt.im.InputContext.getInputMethod(InputContext.java:641)
          at sun.awt.im.InputContext.dispatchEvent(InputContext.java:193)
          at sun.awt.im.InputMethodContext.dispatchEvent(InputMethodContext.java:177)
      :
    

    フォント関連のエラーがたくさん出ています。それからXIMがオープンできないというExceptionが飛んでいます。(^^;)これはどうすればよいのでしょう?が、一応ちゃんと表示されています。かなり見ごたえありますね。しかし、CPUぶんぶん回っているし、メモリ100Mくらいがjavaに使われています。これは厳しいですね。

    ところで、XIMがオープンできないというExceptionが飛んでいる問題ですが、以下のようにしても相変わらずメッセージが出ます。この問題への対処方法をご存知の方、どうかご教授下さい。よろしくお願い致します。

    (1)
    % env LANG=C LC_ALL=C LC_MESSAGES=C XMODIFIERS=@im=none /usr/local/java/jdk1.3.1/bin/java -classic -jar Java2Demo.jar
    (2)
    % unsetenv LANG LC_ALL LC_MESSAGES XMODIFIERS
    % java -classic -jar Java2Demo.jar
    
  4. 参考文献
    後藤 大地さんのサイト Daichi Goto Information Station
    FreeBSDでJavaを使うための情報が充実しています。

Copyright(C) 2001-2006 ykondou.org
webmaster@ykondou.org
Key fingerprint = 7721 FB0E 42CC 2BD3 DB09 5868 3EC7 B5D2 B75C 5DAA