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 ?
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.