我正在创建一个锁定文件以防止我的程序的多个实例,如下所示如何实现单实例 Java 应用程序?
如果我从命令行运行我的程序,它可以正常工作,也就是说它会启动我的程序并创建锁定文件。当我尝试再次运行我的程序时,它会识别锁定文件并且不会启动另一个实例,它会将命令行参数传递给当前正在运行的进程。 这就是我想要的。
如果我使用 .bat 文件,则第二次运行.bat文件时,我会收到此消息"进程无法访问该文件,因为它正被另一个进程使用"。 该消息不是来自我的程序。 程序未按预期运行。 我觉得很奇怪,它到了我的程序尝试访问该文件的地步,但我的打印语句都没有出现在我的日志文件中。 我有程序的日志文件,我从.bat文件中捕获标准输出。
在这里
echo "START" >> C:UsersJoeDocumentsNetBeansProjectsMyProgramlogsmyp.log
java -jar C:UsersJoeDocumentsNetBeansProjectsMyProgramtargetMyProgram.jar %1 >> C:UsersJoeDocumentsNetBeansProjectsMyProgramlogsmyp.log 2>&1
echo "FINISH" >> C:UsersJoeDocumentsNetBeansProjectsMyProgramlogsmyp.log
似乎该问题与我正在使用的锁定文件无关,而与我在批处理文件中写入的日志文件有关。
不确定如何解决这个问题,但是如果我从批处理文件中删除日志文件的写入,一切正常。
Windows 正在生成消息。
你为什么不使用
if not exist "lockfile" myapplication
在您的批次中?