实例化 Java AWT 对象会导致空应用程序在 macOS 上打开

Instantiating a Java AWT object causes empty application to open on macOS

当我从 java.awt 实例化一个对象时,程序会打开一个名为 "Java" 的新 macOS 应用程序,但没有 windows。

如何防止这种情况发生?

这是一个最小的例子:

import java.awt.Rectangle;

public class Main {
    public static void main(String[] args) {
        Rectangle rect = new Rectangle();
    }

}

编译后运行以最规范的方式(javac Main.java; java Main),Dock中出现如下图标:screenshot

我查过代码,违规的方法是Toolkit.loadLibraries() (JDK 1.8.0_172-b11).

我找到了基于 @MadProgrammer's 的解决方案。

答案是将 AWT 设置为无头模式。

执行程序时:

$ java -Djava.awt.headless=true Main

或以编程方式:

System.setProperty("java.awt.headless", "true");