powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Несколько экземпляров программы
14 сообщений из 14, страница 1 из 1
Несколько экземпляров программы
    #38958175
VaneS Ri_lax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, подскажите пожалуйста как запретить выполнение несколько экземпляров программы?
...
Рейтинг: 0 / 0
Несколько экземпляров программы
    #38958209
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В Java Web Start есть готовая фича
http://docs.oracle.com/javase/7/docs/jre/api/javaws/jnlp/index.html

А если кустарно, то просто подымаешь ServerSocket на какой-то специфический TCP порт. Если binding обломался, значит другой экземпляр уже запущен.
...
Рейтинг: 0 / 0
Несколько экземпляров программы
    #38958210
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Несколько экземпляров программы
    #38958224
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А у него - точно вебстарт?
...
Рейтинг: 0 / 0
Несколько экземпляров программы
    #38958241
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonА у него - точно вебстарт?
BlazkowczА если кустарно, то просто подымаешь ServerSocket на какой-то специфический TCP порт. Если binding обломался, значит другой экземпляр уже запущен.
...
Рейтинг: 0 / 0
Несколько экземпляров программы
    #38958324
VaneS Ri_lax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А при чем тут вебстарт?
У меня есть jar файл, мне нужно чтобы он не запускался, если программа уже запущена.
...
Рейтинг: 0 / 0
Несколько экземпляров программы
    #38958349
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VaneS Ri_laxА при чем тут вебстарт?
У меня есть jar файл, мне нужно чтобы он не запускался, если программа уже запущена.
Вы, бл?*:!, издеваетесь?

BlazkowiczА если кустарно, то просто подымаешь ServerSocket на какой-то специфический TCP порт. Если binding обломался, значит другой экземпляр уже запущен.
...
Рейтинг: 0 / 0
Несколько экземпляров программы
    #38958550
VaneS Ri_lax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А другого способа нет? Я знаю что на c++ это можно делать, можно даже установить максимальное число экземпляров. Вот в Java разве нельзя сделать что то подобное?
...
Рейтинг: 0 / 0
Несколько экземпляров программы
    #38958565
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Несколько экземпляров программы
    #38958573
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VaneS Ri_laxА другого способа нет? Я знаю что на c++ это можно делать, можно даже установить максимальное число экземпляров. Вот в Java разве нельзя сделать что то подобное?
Да ладно! Где это "в С++ можно установить максимальное число экземпляров" ? Надеюсь не путаешь с объектами операционной системы?
...
Рейтинг: 0 / 0
Несколько экземпляров программы
    #38958579
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VaneS Ri_laxА другого способа нет?
Вагон и маленькая тележка. Захват любого системного ресурса + try...catch. Что может быть проще?

VaneS Ri_laxЯ знаю что на c++ это можно делать, можно даже установить максимальное число экземпляров. Вот в Java разве нельзя сделать что то подобное?
Можно. Если знать как работает то что написано на С++.
...
Рейтинг: 0 / 0
Несколько экземпляров программы
    #38958596
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Основные методы
1. lock file - при запуске приложения проверяем есть ли файл блокировки. Если нет то создаем файл блокировки, если да то значить какой то экземпляр уже запущен.
Так устроено в netbeans (кажется файл называется .lock).
Из минусов если jvm скрашилась или убили процесс или пропало питание то файл может остаться в системе и в следующий раз чтобы запустить программу придется вручную удалить этот файл.
В IO API есть temp файлы которые автоматически удаляются при завершении процесса jvm.

2. Наиболее широко распространенный. Открыть socket и слушать как указал блазковитс.
а)Правда не знаю будет ли винда задавать вопрос разрешить ли java процессу создавать сетевое соединение. Если брандмауэр активирован.

3.Попробовать получить от ОС список запущенных процессов java и какие параметры были переданы в него и отследить запущенную jar-ку в java процессах.

наверняка есть еще варианты но обычно socket вполне достаточно.
...
Рейтинг: 0 / 0
Несколько экземпляров программы
    #38958600
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вариант с файлом - самый кроссплатформенный.
...
Рейтинг: 0 / 0
Несколько экземпляров программы
    #38958639
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming1. lock file - при запуске приложения проверяем есть ли файл блокировки. Если нет то создаем файл блокировки, если да то значить какой то экземпляр уже запущен.
Так устроено в netbeans (кажется файл называется .lock).
Из минусов если jvm скрашилась или убили процесс или пропало питание то файл может остаться в системе и в следующий раз чтобы запустить программу придется вручную удалить этот файл.
Поэтому такой файл не надо проверять. Надо сразу создавать залоченным. При падении процесса система снимет лок с файла автоматически.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Несколько экземпляров программы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]