我正在创建一个锁定文件以防止我的程序出现多个实例,如此处所示 如何实现单个实例 Java 应用程序?.
如果我从命令行运行我的程序,它工作正常,那就是它启动我的程序并创建锁定文件。当我尝试再次运行我的程序时,它会识别锁定文件并且不会启动另一个实例,它将命令行参数传递给当前正在运行的进程。这就是我想要的。
如果我使用 .bat 文件,我第二次运行 .bat 文件时会收到此消息“该进程无法访问该文件,因为它正被另一个进程使用。” 该消息不是来自我的程序。该程序未按预期运行。我觉得奇怪的是它到达了我的程序尝试访问该文件的点,但我的打印语句都没有出现在我的日志文件中。我有我的程序的日志文件,并从 .bat 文件中捕获标准输出。
这里是
echo "START" >> C:\Users\Joe\Documents\NetBeansProjects\MyProgram\logs\myp.log
java -jar C:\Users\Joe\Documents\NetBeansProjects\MyProgram\target\MyProgram.jar %1 >> C:\Users\Joe\Documents\NetBeansProjects\MyProgram\logs\myp.log 2>&1
echo "FINISH" >> C:\Users\Joe\Documents\NetBeansProjects\MyProgram\logs\myp.log