2

创建动态代理 (java.lang.reflect.Proxy) 会导致 OS X(至少 10.7 和 10.8)将焦点放在创建代理的 Java 应用程序上。

我创建的代理包装了一个启动外部进程的对象。这个外部进程期望获得焦点,而当 Java 进程窃取焦点时,事情就会失败。

似乎 OS X 正在将 Java 进程提升到 Dock,这就是它从其他应用程序中抢走焦点的原因。有谁知道如何防止这种情况?

4

1 回答 1

3

如果您的代码涉及与 AWT 子系统有关的任何内容,您通常会获得 Mac Java 应用程序的停靠图标。这包括看似无害的事情,比如计算字体度量,而不仅仅是显示JFrame.

如果您的 Java 代码不需要实际显示任何 GUI 组件,您可以将系统属性设置java.awt.headless为字符串true,以防止它启动本机窗口系统(尽管如果您使用此选项集运行,然后执行一些确实需要本机 GUI 你会得到一个例外)。

于 2012-10-23T10:47:11.803 回答