是否可以指定JVM通过JVM启动它的窗口的X显示?我在想这样的事情
java -DISPLAY=THE_DISPLAY_I_WANT:0.1 -jar my.jar
我查看了手册页,我找不到任何东西。
或者我是否需要在像这样的
这样的shell脚本中将我的调用包装到jvm中#/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做到这一点,我无法在任何地方看到它。如果无法完成,那么正确的答案应该是“不,你不能”,我已经知道了替代方案:)
由于
答案 0 :(得分:4)
鉴于您对答案的限制,您正在寻找的答案是“无法完成”
我仍然很好奇为什么第二种解决方案不适合你。我意识到这不是你想要的,我只是想知道为什么
答案 1 :(得分:0)
如果你正在使用sh,bash等,你可以这样做
DISPLAY=THE_DISPLAY_I_WANT:0.1 java -jar my.jar
答案 2 :(得分: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
环境变量用于其他东西,不是吗?既然它不被用于其他任何东西,你也可以将它用于其预期目的,不是吗?