【问题标题】:How to remove the superfluous "Launcher" GUI for Java CLI application如何为 Java CLI 应用程序删除多余的“启动器”GUI
【发布时间】:2015-08-14 09:35:24
【问题描述】:

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

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

理想情况下,我想要完全抛弃“启动器”GUI,但如果失败了,我可以忍受它不再从当前 GUI 中窃取焦点。我怎样才能做到这一点?

【问题讨论】:

  • about 菜单显示什么?
  • 没有关于菜单。您在屏幕截图中看到的内容涵盖了整个“GUI”。但是,单击“关于 Launcher”条目会导致一个没有标题和文本的通用弹出窗口:“关于 Launcher 版本 1.0 (1.0)。”
  • 成功了,谢谢!我永远也猜不到这个解决方案。
  • @jjpe 很高兴听到!我删除了我的评论并将其重写为答案,因为这只是一个猜测,如果您接受它,我们将不胜感激。
  • 其实我只是想建议,但你抢先了。

标签: java macos user-interface


【解决方案1】:

将其设置为无头会导致操作系统对您的应用程序的处理方式略有不同。当您的应用程序不需要启动参数以外的任何输入时,您应该使用无头模式,最常见的是守护程序。

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

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

你也可以通过JVM参数-Djava.awt.headless来设置。

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

【讨论】:

  • 我使用 ZeroMQ 套接字进行 I/O,但确实没有直接的用户交互(我确实使用 stdout 进行日志记录)。到目前为止,似乎在无头模式下工作正常。另外,我不知道无头模式的 -D 开关,所以谢谢你,但在这种情况下,硬编码更合适。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-07
  • 1970-01-01
  • 1970-01-01
  • 2012-03-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多