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

标签 java jar

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

我检查了服务器/客户端解决方案和锁定文件,但我不太了解它们,我也尝试让它们在 NetBeans 中运行,但没有成功...

最佳答案

您可以使用套接字 - 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.");
        }
    }
} 

关于java - 如何确保我的程序只能执行一个实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1482474/

相关文章:

java - 如何创建cmd文件来运行jar?

java - 在 Windows 上用 map reduce 程序创建一个 jar 文件,然后在 linux (hadoop) 上运行它

java - 如何将自定义 jar 文件部署到 Maven 中央存储库中以在 pom.xml 中用作依赖项

java - 减少外部 jar 文件的大小

解密时出现 javax.crypto.IllegalBlockSizeException

java - Java 中的字符串大十进制数

java - 我的 web 应用程序在 context.xml 中找不到 beans

java - 如何以直接从 Eclipse 和可运行 JAR 中工作的方式从/src/main/resources 加载资源?

java - 特定单词多次出现的正则表达式

java - 如何解决我的测试项目中的 io.netty 错误