2012-01-02 1 views
1

Как я могу заставить свое приложение Java удалить себя, а затем закрыть сам по себе на ОС Mac/Linux? Я пробовал пару команд Runtime, но никто из них, похоже, не работает.Удаление программы на Java (Mac/Linux)

Что-то вроде этого, может быть:

try { 
    Runtime.getRuntime().exec(new String[]{"/bin/sh", "-c", "rm \"" + getRunningJarPath() + "\""}); 
} catch (final IOException e) {} 

Примечание: Метод: getRunningJarPath точен.

+0

И почему не работает rm? –

+0

Видишь ли, у меня компьютер под управлением Windows. Я хочу ПОЛНОСТЬЮ УВЕРЕНЫ, что этот код будет работать для Mac/Linux. – Confiqure

+2

Если вы хотите быть уверенным, протестируйте на платформах. Linux хорошо работает в vmware-проигрывателе. –

ответ

1

Как правило, это невозможно: программа может произойти не иметь права на удаление себя.

Кроме того, есть проблема: во время работы вашей программы JVM содержит блокировку чтения в JAR, поэтому может случиться так, что вы не можете удалить ее сразу.

Обычно вы запускаете свою программу из сценария, который проверяет код выхода и удаляет файлы, если это необходимо.

+2

Системы на базе Unix позволяют удалять файлы во время их открытия. –

+0

Это зависит от базовой файловой системы, насколько я могу судить, и вы заранее не знаете, какая файловая система существует. – alf

+0

Нет, это зависит от операционной системы. –

0

Вы можете создать хроны удалить файл, который запускается после задержки

+0

Образец образца пожалуйста? – Confiqure

+0

Это может помочь http://www.thesitewizard.com/general/set-cron-job.shtml – nidhin

+0

http://www.cronjob.com/cron-job-tutorials.html для задания задания cron – nidhin

0

Вы не указываете, почему вы хотите, чтобы программа была удалена впоследствии.

В любом случае, вы не должны полагаться на управление файловой системой самостоятельно. Я бы предложил вам заглянуть в Java WebStart, поскольку он обеспечивает все кэширование файловой системы (включая истечение), которое вам нужно.