Linux上の Java 1.4で、AWT関係が動作しない
イメージング関係のライブラリでは後ろでAWTを使っていることが多い。そのため X Window Systemを入れていないLinux環境だと動作しないことがある。
そのような場合、VMのオプションとして -Djava.awt.headless=true を付けると Xサーバのインスタンスが不要になるため問題は解決する。ように思えたが、Java 1.4のAWTは libXp.soなる deprecatedなX関係のライブラリに依存しているため、最近の Linuxディストリビューションでは NoClassDefFoundErrorになってしまい動作しないという問題が発生してしまう。
「headless指定をすればXがいらない」という思いこみのため、この問題の追跡には時間を要してしまった。
なおJava 5以降の libawt.soをlddしてみたところそういう依存関係自体が解消されているようだったので、これは Java1.4特有の問題と思われる。
VMを Java5以降にスイッチするか、libXp.soをインストールすることでこの問題を回避できるだろう。
CentOSの場合、yum install xorg-x11-deprecated-libs で libXp.soが入る。
そのような場合、VMのオプションとして -Djava.awt.headless=true を付けると Xサーバのインスタンスが不要になるため問題は解決する。ように思えたが、Java 1.4のAWTは libXp.soなる deprecatedなX関係のライブラリに依存しているため、最近の Linuxディストリビューションでは NoClassDefFoundErrorになってしまい動作しないという問題が発生してしまう。
「headless指定をすればXがいらない」という思いこみのため、この問題の追跡には時間を要してしまった。
なおJava 5以降の libawt.soをlddしてみたところそういう依存関係自体が解消されているようだったので、これは Java1.4特有の問題と思われる。
VMを Java5以降にスイッチするか、libXp.soをインストールすることでこの問題を回避できるだろう。
CentOSの場合、yum install xorg-x11-deprecated-libs で libXp.soが入る。

0 件のコメント:
コメントを投稿
<< ホーム