目前我所知道的有两个方法方法一
java启动时调用的命令都是java,在windows上如果通过进程名称来判断程序是否启动时不可行的,因为可能存在多个调用java的程序,一种办法是将java.exe复制一份重命名,然后在启动脚本里使用这个新的exe即可。
最近发现还有一种办法,花了一点时间,通过批处理bat来完成,原理是使用文件占用与否做出判断。
运行java程序时将console推送到文件,这样这个文件就会被独占,此时删除、重命名等操作是不允许的。
利用这个原理,java程序启动时先用bat的重命名ren命令将console文件重命名,如果失败则说明程序运行中,否则就可以启动(del命令无论删除成功与否都返回0,所以使用del是不行的),另外这样做的一个目的是不用在给用户做什么界面了,通过bat提示完成,同时系统运行起来后不显示黑窗口。
方法二
利用socket 启动查看端口是否被占用
推荐方法一 使用范围更广
有一种很笨的方法
每次开程序检查一下c盘的目录下是否有个文件(名字随意),如果有,就退出,什么都不错。如果没有,就新建个,并且运行,运行结束删除该文件。