Linux マシンとの SSH トンネリングを介した Windows PC 上の Java GUI の奇妙な動作

Linux マシンとの SSH トンネリングを介した Windows PC 上の Java GUI の奇妙な動作

仕事で構築した Java GUI で非常に奇妙な問題が発生しています。あまりにも奇妙なので、どこから助けを求めたらよいのかさえわかりません。

オフサイトの場所に、XP を実行する Windows PC と SuSE Linux マシンで構成されるスタンドアロン システムがあります。Linux マシンでいくつかの bash スクリプトを実行する Java GUI を構築しました。ユーザーは Linux ユーザーではないため、GUI は Windows マシンから起動されます。GUI は、メイン処理スクリプトへの入力を提供するためのコマンド ライン プロンプトをユーザーに表示するスクリプトを置き換えるために構築されました。

ユーザーは、Windows デスクトップ上のアイコンをクリックすると、DOS バッチ (*.bat) ファイルを実行します。バッチ ファイルは、保存された PuTTY セッションで plink を使用して Linux マシンに接続し、「java -jar XXX.jar」コマンドを実行して GUI を起動します。Windows PC で実行されている Cygwin/XX Server により、Windows PC に GUI が表示されます。

さて、奇妙な点についてです。GUI を最初にポップアップした場所にそのままにしておくと、すべて正常に動作します。GUI を移動すると、プルダウン メニュー (ドロップダウン コンボ ボックスとメニュー バー プルダウン) は正常に動作しなくなります。プルダウン メニューのみ動作し、その他のすべては正常に動作します (プッシュボタン、テキスト フィールドなど)。GUI を元の位置に戻すと、すべて正常に動作します。マウス カーソルをクリックして押したままドラッグし、GUI が最初にポップアップした場所 (GUI を移動した場所に残す) に移動すると、プルダウン メニューは正常に動作します。

最初はプルダウン メニューを初期化する方法に問題があると思いましたが、今はよくわかりません。Windows <-> Putty <-> Linux または Xwin の設定で何かおかしなことが起こっているのではないかと思っています。

この問題を解決できない一因は、職場でこの動作を再現できないことです。残念ながら、オフサイト システムの正確なレプリカがないため、XP から Debian Linux マシンでこの GUI をテスト/構築しています。

誰かこのようなものを見た人はいますか? ここで何が起こっているのか、何かアドバイスはありますか?

10億倍の感謝

請求書

答え1

X リダイレクトを介して Java を実行するのは良い考えではないと思います。

Java プログラムを Windows PC にインストールして、plinkコマンドを起動して実行してみてはいかがでしょうか。Java プログラムのソース コードをお持ちの場合は、クラスを追加してラップし、置き換えて、コマンド ラインの前にRuntime.getRuntime().exec()置くのは簡単です。その後、クラスを少し操作して、すべてに 1 つのセッションを使用するようにすることができます。その後、同じインターフェイスを持つ別のクラスを作成することもできますが、 を追加しないので、Java プログラムは Windows と Linux の両方で実行できます。plinkplinkplink

答え2

-Dsun.java2d.xrender=trueJava 1.7では、リモートXディスプレイを使用するときに使用できます。これにより、JavaはXで実行されていることを認識します。http://docs.oracle.com/javase/7/docs/technotes/guides/2d/flags.html

答え3

これは、Java のグラフィック システムである Java 2D のハードウェア アクセラレーションと関係がある可能性があります。

Java プロセスの次のコマンドライン オプションを追加して、ハードウェア アクセラレーションをオフにしてみてください。

-Dsun.java2d.d3d=false

Java 2D設定の完全なリファレンスもありますここDirect 3D をオフにすると UI が遅くなりますが、メニューのみでアニメーションのないシンプルな UI の場合は問題になりません。

関連情報