2017-06-22 34 views
0

我正在創建一個鎖定文件以防止我的程序的多個實例在此處看到 How to implement a single instance Java application?鎖定文件將無法與Windows.bat文件一起使用

如果我從命令行運行我的程序,它工作正常,它啓動我的程序並創建鎖定文件。當我嘗試再次運行我的程序時,它會識別鎖定文件並且不會啓動另一個實例,它將命令行參數傳遞給當前正在運行的進程。這就是我想要的。

如果我使用.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 
+0

你可以發佈你的批處理文件嗎? – Hackoo

回答

0

看來這個問題與我正在使用的鎖文件無關,而且與我在批處理文件中寫入的日誌文件有關。
不知道如何解決這個問題,但如果我從我的批處理文件中刪除日誌文件的寫作一切正常。

0

視窗被生成該消息。

你爲什麼不使用

if not exist "lockfile" myapplication 
在批處理

+0

我需要傳遞現有的程序數據,我想也有辦法解決這個問題,但我想知道發生了什麼 –

相關問題