Redémarrage automatique
Résolu
TheKill_TnT
Messages postés
154
Date d'inscription
Statut
Membre
Dernière intervention
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour, j'aimerais savoir comment faire redémarrer un programme automatiquement en java.
Sens: Le programme tourne... Maintenant par exemple je veux redémarrer le programme.
Il faudrais dans l'idéal que une deuxième instance démarre et que juste après la précédente quitte.
Si quelqu'un sait comment faire ceci, je vous en remercierais.
PS: Extrait de la dernière tentative:
Résultat: L'application quitte, mais pas de deuxième instance...
Sens: Le programme tourne... Maintenant par exemple je veux redémarrer le programme.
Il faudrais dans l'idéal que une deuxième instance démarre et que juste après la précédente quitte.
Si quelqu'un sait comment faire ceci, je vous en remercierais.
PS: Extrait de la dernière tentative:
public void restart(){ Thread t = new Thread(); t.setName("Thread001"); //t.start(); t.run(); System.exit(0); }
Résultat: L'application quitte, mais pas de deuxième instance...
A voir également:
- Redémarrage automatique
- Forcer redemarrage windows - Guide
- Réponse automatique thunderbird - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Logiciel de sauvegarde automatique gratuit - Guide
- Sommaire automatique word - Guide
2 réponses
Bonjour,
Au risque de jouer sur les mots, "redémarrer un programme", c'est à dire arrêter complètement le programme, puis qu'il démarre à nouveau, ce n'est pas possible.
En revanche, il est possible de revenir au début du programme, mais sans qu'il n'ait jamais vraiment été arrêté.
Pour faire ça, le plus simple c'est juste de rappeler la méthode main qui avait démarré le programme.
Attention : comme le programme n'a pas vraiment été arrêté, les classes déjà chargées seront réutilisées, en particulier les valeurs statiques ne seront pas remises à zéro.
Pour être plus propre, tu pourrais créer un Thread pour chaque partie, ton main ne sert alors qu'à créer les Threads successifs...
Au risque de jouer sur les mots, "redémarrer un programme", c'est à dire arrêter complètement le programme, puis qu'il démarre à nouveau, ce n'est pas possible.
En revanche, il est possible de revenir au début du programme, mais sans qu'il n'ait jamais vraiment été arrêté.
Pour faire ça, le plus simple c'est juste de rappeler la méthode main qui avait démarré le programme.
Start.main(null); // si besoin, remplacer null par un String[] args valide.
Attention : comme le programme n'a pas vraiment été arrêté, les classes déjà chargées seront réutilisées, en particulier les valeurs statiques ne seront pas remises à zéro.
Pour être plus propre, tu pourrais créer un Thread pour chaque partie, ton main ne sert alors qu'à créer les Threads successifs...
TheKill_TnT
Messages postés
154
Date d'inscription
Statut
Membre
Dernière intervention
33
Je vais essayer
Le programme redémarre plus ou moins, enfin j'ai réussi à faire passer les détails inaperçus, et donc j'ai un programme ou à moins de regarder les instances (où l'on peut voir toute les fois ou javaw.exe est démarré^^) on ne sait pas qu'en fait il y a double-instance. Merci.
Résolu
Résolu
En effet, mais c'est là où "je jouais sur les mots" car ce n'est plus vraiment un redémarrage dans ce cas.
Ceci étant dit, il est également possible de faire ce que tu veux avec un seul programme Java, quitte à manipuler des classloader multiples, mais si u veux aller plus loin il faudrait détailler ton cas d'utilisation et par exemple ce qui n'allait pas dans ma proposition de départ...
Ceci étant dit, il est également possible de faire ce que tu veux avec un seul programme Java, quitte à manipuler des classloader multiples, mais si u veux aller plus loin il faudrait détailler ton cas d'utilisation et par exemple ce qui n'allait pas dans ma proposition de départ...
Simple:
Sur le memory (aka "comment télécharger un fichier depuis java..."), j'ai une commande de redémarrage, et j'aimerais que justement cette fonction redémarre le memory. Je pensais utiliser un programme externe (style MemoryLauncher) et qu'à l'extinction du memory lors de l'appui sur "redémarrer" (ou la commande dans le CMD), le Memory renvoie qqch comme "true" à un boolean et vu que c'est true enfin voilà comment je l'imagine:
Memory.jar démarré par une méthode renvoyant un boolean:
MemoryLauncher.jar:
Sur le memory (aka "comment télécharger un fichier depuis java..."), j'ai une commande de redémarrage, et j'aimerais que justement cette fonction redémarre le memory. Je pensais utiliser un programme externe (style MemoryLauncher) et qu'à l'extinction du memory lors de l'appui sur "redémarrer" (ou la commande dans le CMD), le Memory renvoie qqch comme "true" à un boolean et vu que c'est true enfin voilà comment je l'imagine:
Memory.jar démarré par une méthode renvoyant un boolean:
//(Machin qui détecte quand on écrit restart ou quand on appui sur le bouton){ return true; System.exit(0); }
MemoryLauncher.jar:
/*(Main)*/{ while(b = true){ b = start(); } } public boolean b = true; public boolean start(){ //(lancement de l'app) return false; // Soit l'app répond true/false, soit elle ne répond rien et ce return prend le relais }
Oui, mais pourquoi avoir besoin de redémarrer l'application complètement ?
Dans la majeure partie des cas, il suffit de juste relancer le main...
Memory.java :
MemoryLauncher.java
Dans la majeure partie des cas, il suffit de juste relancer le main...
Memory.java :
public static void main(String[] args) { // met à jour le programme // démarre le jeu // arrête le jeu }
MemoryLauncher.java
public static void main(String[] args) { while (true) { // on boucle le Memory plusieurs fois Memory.main(args); } }