【问题标题】:Getdown launch single instance java GUIGetdown 启动单实例 java GUI
【发布时间】:2021-10-17 06:12:50
【问题描述】:

我正在使用 Getdown 启动 javafx 和/或 java swing 应用程序。

我想要一个单实例功能。 例如当有一个实例正在运行时。你不能打开另一个。因此只允许单个实例。

您将如何实现这一目标?我目前正在为 javafx GUI 使用 java 11。

Getdown 是用于将 Java 应用程序部署到最终用户计算机的系统,旨在替代 Java Web Start。

JNLP 提供了一个 SingleInstanceListener。如何使用 Getdown 做同样的事情?

https://github.com/threerings/getdown

【问题讨论】:

  • 应用程序单例通常通过以下两种方式之一实现。 1)在启动时检查特定的套接字,如果空闲则打开它。退出时关闭它。 2)(类似地)创建一个临时文件并在退出时将其删除。

标签: java swing javafx singleton jnlp


【解决方案1】:

不熟悉Getdown,如果不适用,敬请见谅。

如果您只使用 Windows 并且 JNA 是可以接受的,那么这段代码就像一个魅力。几十年来我一直在通过多种不同的语言使用它。

应用启动时:

mutex = Kernel32.INSTANCE.CreateMutex(null, true, mutexName);
if (Kernel32.INSTANCE.GetLastError() == WinError.ERROR_ALREADY_EXISTS) {
  System.exit(-1);
}

然后当应用关闭时:

Kernel32.INSTANCE.ReleaseMutex(mutex);
Kernel32.INSTANCE.CloseHandle(mutex);

【讨论】:

    猜你喜欢
    • 2013-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-19
    相关资源
    最近更新 更多