vine-users ML アーカイブ



[vine-users:072226] How to display Java application via X protocol.

  • From: starfish@xxxxxxxxxxxxxxxx
  • Subject: [vine-users:072226] How to display Java application via X protocol.
  • Date: Tue, 28 Jun 2005 01:56:11 +0900
藤田と申します。

java で書いた GUI プログラムを別の remote PC から起動して
local PC 上に表示させることを行いました。
多少の疑問が残ったものの、成功しましたので紹介しておきます。

remote PC: Vine Linux 3.1   192.168.0.2
local PC: Vine Linux 3.1    192.168.0.4

run level はいずれも 3 です。
(run level 5 に関しては、gdm.conf 辺りが怪しいようです。
 過去のメールにありました。)

まず、単純に local PC から remote PC へ ssh でログインし、
remote PC 上から kterm が起動するか試しました。

local$ ssh remote
remote$ kterm

この場合、local 上に kterm が表示されました。
同様に、ボタンを表示する Java プログラムを実行します。

local$ ssh remote
remote$ java MyJButton

この場合、local 上にウィンドウが出ますが、ボタンは表示されません。
この原因はエラーメッセージが出なかったため結局わからないままです。

そこで、xhost を用いての表示を試みました。
すると、エラーが出てしまいます。

local$ xhost + 192.168.0.2
local$ ssh remote
remote$ env DISPLAY=192.168.0.4:0.0 java MyJButton
Exception in thread "main" java.lang.InternalError: Can't connect to X11 window server using '192.168.0.4:0.0' as the value of the DISPLAY variable.
	at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
  (略)

どうやっても表示できなかったのですが、ふと、local PC の X の引数に
-nolisten tcp が付いているのに気がつきました。
jman X
に記述がなかったのですが、おそらく tcp で listen しないようにして、
全て、ssh の forwarding で行おうとしているのだと思いますが、
/usr/X11R6/bin/startx
内の
serverargs="-dpi 96 -nolisten tcp"
を 
serverargs="-dpi 96"
に変えて、startx を行いました。
そのあと、同様に

local$ xhost + 192.168.0.2
local$ ssh remote
remote$ env DISPLAY=192.168.0.4:0.0 java MyJButton

を行うと無事、local PC (192.168.0.4) 上に表示されました。

セキュリティ的な問題などはあるとは思いますが、うまい具合に
ssh のフォワーディングができなかった? ために、このような
方法になりました。

xhost や DISPLAY の指定をしなくても、kterm などは普通に表示されるのに、
Java だけが表示されないのは謎ですが、とりあえず
xhost と DISPLAY を使えば java アプリケーションを別の PC 上に
表示できるようです。