我需要編寫一個程序,它可以在單個實例中執行。我試圖創建一個臨時文件並在退出程序之前將其刪除。如果程序與緊急(例如電力的削減)完成發生單個程序實例
public static boolean isLocked() {
File f = new File("lock.txt");
return f.exists();
}
public static void lock() {
String fname = "lock.txt";
File f = new File(fname);
try {
f.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void unlock() {
File f = new File("lock.txt");
f.delete();
}
在幀
private void initialize() {
lock();
}
private void setFrameHandler() {
frame.addWindowListener(new java.awt.event.WindowAdapter() {
@Override
public void windowClosing(java.awt.event.WindowEvent windowEvent) {
unlock();
}
});
}
問題。文件不會被刪除,並且不可能運行新的實例。 如何進行可靠的單實例驗證?
你說的話「單指做例如「? – RealSkeptic
我的意思是隻有一個JAVA程序的實例可以在特定的時間執行。如果用戶在程序運行時啓動jar文件,他會收到錯誤消息。 – mambetizm
可能的重複:http://stackoverflow.com/questions/7036108/prevent-launching-multiple-instances-of-a-java-application。還相關:http://www.rgagnon.com/javadetails/java-0288.html簡單的解決方案:嘗試創建ServerSocket。 – Pshemo