0

是否可以指定 JVM 通过 JVM 在哪个 X 显示器上启动它的窗口?我在想这样的事情

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

我查看了手册页,但找不到任何东西。

还是我需要将我对 jvm 的调用包装在这样的 shell 脚本中

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

我不想编写脚本只是为了指定一个可以直接传递给 JVM 的参数。

PS:不,我不想更改我的环境 DISPLAY 变量我想在我喜欢的任何 DISPLAY 上启动 JVM :)

更新 回答问题“为什么我使用第二种解决方案很重要”使用第二种解决方案,如果我想在几个不同的显示器上启动 jvm 会话,我必须为每个会话设置 DISPLAY。

我正在寻找的就像你可以用 Xprograms 做的事情

试试xterm -display my_display:0.0 所以我的问题是我可以用 jvm 做这个吗,我在任何地方都看不到它的记录。如果做不到,那么正确的答案应该是“不,你不能”,我已经知道替代方案了:)

谢谢

4

3 回答 3

4

鉴于您对答案的限制,您正在寻找的答案是“无法完成

我仍然很好奇为什么第二种解决方案对您不起作用。我意识到这不是你想做的,我只是想知道为什么

于 2009-02-06T01:23:21.203 回答
0

如果您使用的是 sh、bash 或类似的东西,您可以这样做

DISPLAY=THE_DISPLAY_I_WANT:0.1 java -jar my.jar
于 2009-02-05T23:22:17.470 回答
0

如果您对您的建议感到满意,

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

那么我不知道你为什么抗拒这些:

DISPLAY=THE_DISPLAY_I_WANT:0.1 java -jar my.jar
环境显示=THE_DISPLAY_I_WANT:0.1 java -jar my.jar

如果您担心的话,它们不会全局修改环境变量。他们只为新进程(以及它产生的任何其他内容)修改它。其他新进程不会受到影响,已经运行的进程肯定不会受到影响。

如果这不是问题,那么我猜您的意思是在第一个示例中,您不会真正修改DISPLAY环境变量,甚至不会修改新的 Java 进程。相反,您将指望当前 JVM 的 X11 层有其他方法来确定将其图形输出发送到何处。我想它可以这样工作。也许地球上的所有其他 Java 程序都只是忽略了这种其他方式,并让 JVM 回退到使用环境变量,因为它适用于非 Java 程序。

但为什么这很重要?好像您的程序不会将(未修改的)DISPLAY环境变量用于其他用途,是吗?由于它没有用于其他任何用途,因此您也可以将其用于预期目的,不是吗?

于 2009-02-06T00:57:47.340 回答