begin process at 2008 07 24 19:07:21
1 215 858 membres
413 nouveaux aujourd'hui
14 179 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

INSTANCE UNIQUE D'UN PROGRAMME (SANS SOCKET NI FICHIER)


Information sur la source

Catégorie :Systeme Classé sous : unique, instance, programme Niveau : Débutant Date de création : 13/05/2008 Vu / téléchargé: 1 657 / 49

Note :
Aucune note

Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note


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

  • /*
  • * 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();
  • }
  • }
/*
 *  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 ?
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   source
    • application.jarTélécharger ce fichier [Réservé aux membres club]1 258 octets
    • InstanceUnique.jarTélécharger ce fichier [Réservé aux membres club]1 709 octets
    • InstanceUnique.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier1 023 octets

Télécharger le zip

  • signaler à un administrateur
    Commentaire de vecchio56 le 14/05/2008 22:31:50 administrateur CS

    Application.jar n'est-il pas un fichier?

  • signaler à un administrateur
    Commentaire de Chatbour le 14/05/2008 23:03:25

    Oui bien sûr, mais ici ce n'est pas le même principe de la solution utilisant un fichier temporaire ou l'application crée un fichier en se lançant, et le supprime en quittant..

  • signaler à un administrateur
    Commentaire de vecchio56 le 14/05/2008 23:08:02 administrateur CS

    Tu ne peux donc pas dire que c'est une solution sans fichier. J'ai regardé l'autre solution dont tu parles, et je pense qu'elle est plus sûre, car avec ta méthode on peut renommer le fichier à la main et ainsi lancer deux instances.
    Par contre si le processus verrouille le fichier, on ne peut pas le renommer sans tuer le processus.

  • signaler à un administrateur
    Commentaire de mahlaoui le 20/05/2008 00:26:19

    Many Thanks

Ajouter un commentaire

Pub



Appels d'offres

Creation portail video
Budget : 3 000€
Site de e-commerce
Budget : 5 000€
Demande de devis pour ...
Budget : 7 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Boutique

Boutique de goodies CodeS-SourceS