如何确保只能执行我的程序的一个实例?

HoN*_*uRu 2 java jar

我希望我的程序,一个Java可执行文件.jar,只运行一次.我制作了一个程序,但现在我希望用户不能打开多个实例....感谢您的时间......

我检查了服务器/客户端解决方案和锁定文件,但我对它们了解不多,我还试图让它们在NetBeans中运行,没有运气......

Nat*_*ate 8

您可以使用套接字 - ServerSocket只能侦听尚未使用的端口.第一次启动在端口上成功创建了一个ServerSocket实例 - 当该程序正在运行时,不能在该端口上成功创建其他ServerSocket.

import java.io.IOException;
import java.net.ServerSocket;

public class OneInstance {

    private static ServerSocket SERVER_SOCKET;

    public static void main(String[] args) {
        try {
            SERVER_SOCKET = new ServerSocket(1334);
            System.out.println("OK to continue running.");
            System.out.println("Press any key to exit.");
            System.in.read();
        } catch (IOException x) {
            System.out.println("Another instance already running... exit.");
        }
    }
} 
Run Code Online (Sandbox Code Playgroud)


Jef*_*rey 7

您可以使用锁定文件解决方案.在启动应用程序时,请检查特定文件.如果它不存在,请创建它并正常启动应用程序.如果确实存在,请退出该应用程序.您需要确保在应用程序关闭时删除文件(可能使用FileLock).