No existe una instancia previa en Java, pero puede crear un archivo pid en el directorio temp (o/var/run). (Y hágala File.deleteOnExit()
para limpiarlo de todos modos en la salida)
Para llevar la ventana existente a la parte superior, puede notificar el programa usted mismo, a través de named pipe, unix socket o java remote method call, etc. Un simple & sucio es escribir en un archivo pequeño, digamos $TEMP/foobar-app.bring-to-top
, y el programa debe sondear periódicamente este pequeño archivo, si llega a existir, lleve la ventana a la parte superior y elimine este pequeño archivo.
Supongo que Java no podría manejar señales, es decir, kill -HUP PID
puede no funcionar para aplicaciones Java. Incluso si pudiera, no todos los sistemas operativos tienen señales.
http://stackoverflow.com/questions/2528844/only-one-swing-frame-window-opened-at-time – onurbaysan
@mKorbel no es necesario publicar ningún código, la pregunta es clara y autónoma. La respuesta de Judas Imam es perfecta. – alf
Formas alternativas de implementar una aplicación de instancia única: http://stackoverflow.com/questions/177189/how-to-implement-a-single-instance-java-application – ozhan