Mehrmaligen Start verhindern

obafmkm

Grünschnabel
Hallo!

Ich möchte verhindern, dass mein Programm mehrmals gestartet werden kann. Wie kann ich das am besten erreichen? Ich habe schon im Netz gesucht und einen Hinweis auf die Klasse java.nio gefunden, sehe aber nicht, wie sie mir helfen kann.
 
Moin,

ich kenne als verlässliche Möglichkeit nur die Methodik, dass man einen Port reserviert, sobald die Anwendung gestartet wird.
Versucht der Nutzer nun erneut, eine Instanz des Programms auszuführen, so wird diese geblockt, da der Port belegt ist:

Java:
private static final int RUN_PORT = 9666; 
// irgendein unbedeutender Port der nicht vom System genutzt wird

public static void main(String[] args) 
{ 
  try { 
    java.net.ServerSocket ss = new java.net.ServerSocket(PORT); 
  } catch (java.net.BindException ex) { 
    System.out.println("Programm läuft bereits."); 
    System.exit(1); 
  } catch (java.io.IOException ex) { 
    ex.printStackTrace(); 
    System.exit(1); 
  } 
}

Ansonsten gäbe es halt noch die Möglichkeit, eine temporäre Datei anzulegen, die nach jedem Programmende gelöscht wird.
Existiert die Datei zum Programmstart bereits, wird das Programm nicht noch einmal ausgeführt.
Diese Methode ist aber nicht sicher, da man einfach das Programm verschieben bzw. die Datei löschen kann.

Gruß,
Xan
 

Neue Beiträge

Zurück