【问题标题】:Instantiating a Java AWT object causes empty application to open on macOS实例化 Java AWT 对象会导致在 macOS 上打开空应用程序
【发布时间】:2019-07-01 15:19:03
【问题描述】:

当我从java.awt 实例化一个对象时,程序会打开一个名为“Java”的新 macOS 应用程序,它没有窗口。

我怎样才能防止这种情况发生?

这是一个最小的例子:

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)。

【问题讨论】:

  • 简短回答,你不能。这就是 MacOS 的工作原理。 “长”答案将要求您生成一个 .app 包:/
  • @MadProgrammer 我明白了,谢谢。出于好奇,您是否有阅读 .app 捆绑包的参考资料? (谷歌搜索“.app bundle”而不搜索“app bundle”非常困难)
  • 尝试类似java apple app bundlejava apple app bundle icon 的东西,不,这并不容易:/
  • 您可能还想查看 examplethis 之类的“macOS java 隐藏停靠图标”(但我不确定它是否仍然有效)
  • @MadProgrammer 啊是的,这正是我想要的,谢谢!您确实可以配置awt。我会回答的:)

标签: java awt


【解决方案1】:

我根据@MadProgrammercomment找到了解决方案。

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

执行程序时:

$ java -Djava.awt.headless=true Main

或以编程方式:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-07
    • 1970-01-01
    • 1970-01-01
    • 2021-03-14
    • 2011-03-24
    • 1970-01-01
    相关资源
    最近更新 更多