0

JVMがJVMを介してウィンドウを起動するXディスプレイを指定することは可能ですか? 私はこのようなことを考えています

java -DISPLAY=THE_DISPLAY_I_WANT:0.1 -jar my.jar

マニュアルページを見ましたが、何も見つかりません。

または、このようなシェルスクリプトでjvmへの呼び出しをラップする必要がありますか?

#/bin/sh
export DISPLAY=THE_DISPLAY_I_WANT:0.1
java -jar my.jar

JVM に直接渡すことができる引数を指定するためだけにスクリプトを作成したくありません。

PS: いいえ、環境の DISPLAY 変数を変更したくありません。好きな DISPLAY で JVM を起動したい :)

更新 「2 番目のソリューションを使用すると問題になるのはなぜですか」という質問への回答 2 番目のソリューションを使用すると、複数の異なるディスプレイで jvm セッションを開始したい場合は、セッションごとに DISPLAY を設定する必要があります。

私が探しているのは、Xprogramsでできることのようなものです

試してみてくださいxterm -display my_display:0.0 私の質問は、jvmでこれを行うことができるかということです。どこにも文書化されていません。それができない場合、正しい答えは「いいえ、できません」である必要があります。私はすでに別の方法を知っています:)

ありがとう

4

3 に答える 3

4

答えに対する制約を考えると、あなたが探している答えは「それはできません」です

2 番目の解決策がうまくいかない理由が今でも気になります。それはあなたがやりたいことではないことはわかっています、ただ理由を知りたいだけです

于 2009-02-06T01:23:21.203 に答える
0

ご提案内容にご満足いただけましたら、

java -DISPLAY=THE_DISPLAY_I_WANT:0.1 -jar my.jar

それでは、なぜあなたがこれらのいずれかに抵抗するのかわかりません:

DISPLAY=THE_DISPLAY_I_WANT:0.1 java -jar my.jar
env DISPLAY=THE_DISPLAY_I_WANT:0.1 java -jar my.jar

それがあなたが心配しているのであれば、彼らは環境変数をグローバルに変更しません。新しいプロセス(およびそれが生成するその他のもの)に対してのみ変更します。他の新しいプロセスは影響を受けず、既に実行されているプロセスは影響を受けません。

DISPLAYそれが問題ではない場合、最初の例では、新しい Java プロセスであっても、実際には環境変数を変更しないということを意味していると思います。代わりに、現在の JVM の X11 レイヤーを頼りにして、グラフィカル出力の送信先を決定する別の方法を用意する必要があります。そのように機能する可能性があると思います。おそらく、地球上の他のすべてのJavaプログラムは、他の方法を無視し、JVMが代わりに環境変数を使用するようにフォールバックさせます。これは、Java以外のプログラムで機能するためです。

しかし、なぜそれが重要なのですか?あなたのプログラムが (変更されていない)DISPLAY環境変数を別の目的で使用するわけではありませんよね? 他に使われていないのだから、本来の用途に使っていただいて構いませんよね?

于 2009-02-06T00:57:47.340 に答える
0

sh、bashなどを使用している場合は、次のことができます

DISPLAY=THE_DISPLAY_I_WANT:0.1 java -jar my.jar
于 2009-02-05T23:22:17.470 に答える