我可以阻止Java告诉macOS窗口管理器将焦点从当前窗口移开吗?

时间:2018-08-22 19:39:04

标签: java macos

我正在执行一个执行一系列Java命令的Shell脚本。但是,即使我从命令行执行java,也存在问题。最重要的是,java更改了应用程序菜单栏,但其他命令(例如ls,rm,mv)的行为却不一样。

脚本运行时,我将窗口焦点更改为其他内容。每次脚本执行Java时,窗口管理器都会将焦点从我当前的窗口移开,然后将其交给Java(从而macOS current-application-menubar的外观反映了java命令)。

然后,当java命令完成时,焦点返回到我的当前窗口,而macOS current-application-menubar返回到之前的状态。

该窗口焦点更改的频率使我想起了大卫·林奇的一部以上作品。但是危险是键盘焦点。一次迷路的击键,我得到的不只是些困惑/烦恼。

我曾希望使用Traceback (most recent call last): File "C:/Users/user/PycharmProjects/generatingdata/python_repos.py", line 51, in <module> chart.render_to_file("x.svg") 会产生意想不到但积极的副作用,但没有任何改变。

我已经忍受了很长一段时间,所以我不知道何时会引入这种行为。无论如何,我都使用macOS 10.13.6和Java 1.8.0_171,而我的外壳是bash(但没有奇怪的别名或提示)。

1 个答案:

答案 0 :(得分:3)

设置-Djava.awt.headless=true,使其与本地图形环境断开连接。

请参见Using Headless Mode in the Java SE Platform