java - 如何删除 Java CLI 应用程序多余的 "Launcher"GUI

标签 java macos user-interface

我正在开发一个命令行应用程序(即没有任何 GUI),使用 Java 8mvnOS X 上运行(并且我目前不知道这个问题是否也出现在其他操作系统上)。发展本身进展顺利。

但是,当我启动应用程序时,我得到一个难看的 GUI,简单地称为“Launcher”(这既是应用程序名称,也是进程名称,请参阅 the screenshot )。更令人烦恼和令人震惊的是,当应用程序第一次执行不仅仅是启动的操作时,“启动器”会从用户当时正在使用的 GUI 中窃取焦点。这是非常不受欢迎的(tm)。

理想情况下,我想要的是完全抛弃“启动器”GUI,但如果做不到这一点,我就可以忍受它,不再抢走当前 GUI 的焦点。我怎样才能做到这一点?

最佳答案

将其设置为 headless 会导致操作系统以稍微不同的方式对待您的应用程序。当您的应用程序不需要启动参数之外的任何输入(最常见的是守护程序)时,您应该使用 headless 模式。

以下是有关 headless 模式的更多信息: http://www.oracle.com/technetwork/articles/javase/headless-136834.html

要在代码中设置 headless 模式,请在程序中尽早使用 System.setProperty("java.awt.headless", "true"); ;最好在主类的静态初始化程序中。

您还可以通过 JVM 参数 -Djava.awt.headless 设置它。

这也会隐藏 Mac OS X 上 Dock 中的 Java 图标。

关于java - 如何删除 Java CLI 应用程序多余的 "Launcher"GUI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32006882/

相关文章:

java - 通知调用者类发生了一些事情

macos - 在 mac os x 10.8 上设置 hadoop 的问题

python - 段错误: 11 when I run Pygame

swift - 我应该使用什么替代 UITableViewAutomaticDimension 来在 NSTableView 中获得相同的效果?

c - C语言图形用户界面

unity-game-engine - 如何解决Unity中UI元素的访问问题?

java - 关闭 Karate 中的 SSL 证书验证

java - 如何使用 Java Stream 逐行读取文件

iphone - 如何以编程方式为处于触摸状态的 UIButton 创建灰色覆盖?

java - 如何禁用相同布局的按钮之间的交互?