Top > java

広告

javaを使う

最近はいろいろなOSで動作するようにjavaで書かれたプログラムも多い。
Linuxではgcj(debianパッケージgcj)と言うjavaコンパイラがあってjavaプログラムを実行できる。
ところがプログラムによっては

Exception in thread "main" java.lang.ExceptionInInitializerError
  at java.lang.Class.initializeClass(libgcj.so.90)
  at ....
  ...

Caused by: java.awt.IllegalComponentStateException: component java.awt.Label not showing
  at ......

Exception in thread "main" java.lang.NoClassDefFoundError:

Caused by: java.lang.ClassNotFoundException:

というエラーが出て動かないものもある。
そういうときはSunが提供するjavaエンジンを使うとよく、最近はDebianパッケージでも「sun-java*-**」というパッケージがあって簡単にインストールできる。

ところが、ただこれを入れるだけでは動かない。
というのも上のgcj(libgcj)が優先されてsun-javaが使われないからだ。
この問題解決は2chのレスにある通り

# update-alternatives --set java /usr/lib/jvm/java-6-sun/jre/bin/java

とやるとsun-javaの方が優先されて動くようになる。(パスはバージョンによって違うので注意)
もしかするとgcjに依存するプログラムが動かなくなるかもしれない。

/usr/share/doc/sun-java6-jre/README.alternativesによると

# update-java-alternatives --set java-6-sun

とやればすべて変更してくれる。


広告

リロード   差分   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: Thu, 05 Jan 2012 18:52:13 JST (4942d)