Redémarrage automatique
Résolu/Fermé
TheKill_TnT
Messages postés
154
Date d'inscription
lundi 15 mai 2017
Statut
Membre
Dernière intervention
22 juin 2019
-
Modifié le 20 mai 2018 à 21:41
KX Messages postés 16755 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 - 4 juin 2018 à 19:43
KX Messages postés 16755 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 - 4 juin 2018 à 19:43
A voir également:
- Redémarrage automatique
- Forcer redemarrage windows - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Message automatique thunderbird - Guide
- Logiciel de sauvegarde automatique gratuit - Guide
- Gmail libellé automatique - Guide
2 réponses
KX
Messages postés
16755
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 février 2025
3 020
20 mai 2018 à 22:13
20 mai 2018 à 22:13
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
lundi 15 mai 2017
Statut
Membre
Dernière intervention
22 juin 2019
32
21 mai 2018 à 15:38
21 mai 2018 à 15:38
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
TheKill_TnT
Messages postés
154
Date d'inscription
lundi 15 mai 2017
Statut
Membre
Dernière intervention
22 juin 2019
32
3 juin 2018 à 20:03
3 juin 2018 à 20:03
En fait je pense pouvoir détourner le doubleinstance en créant une instance d'un programme exterieur ^^
KX
Messages postés
16755
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 février 2025
3 020
>
TheKill_TnT
Messages postés
154
Date d'inscription
lundi 15 mai 2017
Statut
Membre
Dernière intervention
22 juin 2019
3 juin 2018 à 20:17
3 juin 2018 à 20:17
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...
TheKill_TnT
Messages postés
154
Date d'inscription
lundi 15 mai 2017
Statut
Membre
Dernière intervention
22 juin 2019
32
>
KX
Messages postés
16755
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 février 2025
4 juin 2018 à 19:28
4 juin 2018 à 19:28
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 }
KX
Messages postés
16755
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 février 2025
3 020
4 juin 2018 à 19:43
4 juin 2018 à 19:43
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); } }
20 mai 2018 à 23:32