По какой-то причине это решение, предотвращающее запуск нескольких экземпляров приложения, больше не работает. Что случилось?
Я ожидаю, что при втором запуске этого приложения будет напечатано: «еще один экземпляр запущен» и остановится с ошибкой, но этого не происходит. Второй экземпляр работает так же, как и первый.
import java.io.File;
import java.io.IOException;
import java.nio.channels.FileChannel;
import java.nio.channels.FileLock;
import java.nio.file.StandardOpenOption;
public class JustOneTest {
public static void main(String[] args) {
runCheck();
while (true) {
try {
System.out.print(".");
Thread.sleep(5 * 60);
} catch (Exception e) {
e.printStackTrace();
}
}
}
private static void runCheck() {
System.out.println("start check: is app running");
final File file = new File(System.getProperty("user.home"), "khf.lock");
try {
FileLock lock;
try (FileChannel fc = FileChannel.open(file.toPath(),
StandardOpenOption.CREATE,
StandardOpenOption.WRITE)) {
lock = fc.tryLock();
}
if (lock == null) {
System.out.println("another instance is running");
throw new Error("another instance is running");
}
System.out.println(lock);
// output: sun.nio.ch.FileLockImpl[0:9223372036854775807 exclusive invalid]
} catch (IOException e) {
throw new Error(e);
}
System.out.println("start check completed");
}
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... -a-file-is
Запретить запуск нескольких экземпляров Java-приложения путем блокировки файла не работает ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Запретить запуск нескольких экземпляров Java-приложения путем блокировки файла не работает
Anonymous » » в форуме JAVA - 0 Ответы
- 19 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Запретить запуск нескольких экземпляров Java-приложения путем блокировки файла не работает
Anonymous » » в форуме JAVA - 0 Ответы
- 20 Просмотры
-
Последнее сообщение Anonymous
-