所以我将我的项目打包为一个可以正常工作的可执行 jar。但有时用户会多次启动该文件,这会导致它启动同一项目的多个实例(导致意外行为,例如,项目的延迟实例覆盖文件中的值)。
我想知道对于 Windows 平台(Win7),有哪些选项可以仅锁定一次执行,然后如果 jar 已经在运行,则不再继续执行代码。
我读到了有关进程ID的信息,但如果有多个java应用程序,它们最终都会将图像名称显示为javaw.exe,我如何确定自己的进程ID?
请建议做这件事的正确方法是什么,谢谢!
最佳答案
最简单的解决方案是使用固定的、未使用的端口。
ServerSocket ss;
try {
ss = new ServerSocket(MY_PORT);
// not already running.
} catch (BindException e) {
// already running.
}
关于java - 仅运行可执行 Jar 文件的单个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8953831/