Instance unique d'un programme (sans socket ni fichier)

Description

Salut à tous,

voici l'idée : une classe nommée <InstanceUnique> essaie de renommer le jar <Application.jar> en app_tmp.jar,

si elle réussit
alors elle restaure l'ancien nom
lance l'application
sinon
l'application est déjà lancée : afficher un message

Source / Exemple :


/*

  • Classe: InstanceUnique
  • Auteur: Chatbour
  • /
import java.io.*; import java.awt.Desktop; import javax.swing.JOptionPane; public class InstanceUnique { // nom du fichier jar private String nomJar = "application.jar"; // nom temporaire private String nomTmp = "app_tmp.jar"; public InstanceUnique() { try { File leJar = new File(nomJar); if(leJar.renameTo(new File(nomTmp)) == true) { // On est le premier à instancier l'application new File(nomTmp).renameTo(new File(nomJar)); Desktop.getDesktop().open(leJar); } else { // Sinon afficher un message JOptionPane.showMessageDialog(null, "L'application est déjà lancée !"); } } catch(IOException e) { System.exit(-1); } } public static void main(String[] args) { new InstanceUnique(); } }

Conclusion :


j'attends vos avis les experts, je pense que cette méthode est moins risquée que la méthode de fichier temporaire et plus simple que la méthode des sockets.. Non ?

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.