Executer un executable externe en Java [2017]
Résolu/Fermé
Utilisateur anonyme
-
Modifié le 19 juil. 2017 à 02:50
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 - 22 juil. 2017 à 18:29
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 - 22 juil. 2017 à 18:29
A voir également:
- Executer un executable externe en Java [2017]
- Ce programme est écrit en python. il construit un mot secret dans une variable mais il ne l'affiche pas. modifiez-le pour qu'il affiche le mot secret. exécutez-le. quel est ce mot secret ? ✓ - Forum Python
- Antimalware service executable ram - Forum antivirus
- Disque dur externe - Guide
- Scanf en java ✓ - Forum Java
- Jeux java itel ✓ - Forum Jeux vidéo
2 réponses
KX
Messages postés
16668
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2023
3 005
19 juil. 2017 à 07:29
19 juil. 2017 à 07:29
Bonjour,
Pas besoin de "cmd /c" fait juste ta commande "path"
Remarque : si tu es censé récupérer un affichage il faut rediriger les flux.
Pas besoin de "cmd /c" fait juste ta commande "path"
Remarque : si tu es censé récupérer un affichage il faut rediriger les flux.
Même si il le sujet est résolu il y a quelque chose de plus simple :
Desktop.getDesktop().open((new File("path")));
KX
Messages postés
16668
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2023
3 005
22 juil. 2017 à 18:29
22 juil. 2017 à 18:29
Cela dépend en fait de ce que l'on veux faire...
Runtime.exec est fait pour démarrer un programmer et interagir avec, en lui passant des paramètres, en récupérant les flux d'entrée/sortie, attendre la fin du processus, etc.
Desktop.open est fait pour ouvrir un fichier, ça l'ouvre avec le programme par défaut configuré sur le système d'exploitation (donc pas forcément celui qu'on voudrait)
Runtime.exec est fait pour démarrer un programmer et interagir avec, en lui passant des paramètres, en récupérant les flux d'entrée/sortie, attendre la fin du processus, etc.
Desktop.open est fait pour ouvrir un fichier, ça l'ouvre avec le programme par défaut configuré sur le système d'exploitation (donc pas forcément celui qu'on voudrait)
19 juil. 2017 à 11:26
Je n'ai jamais eu l'occasion jusqu'à aujourd'hui de gérer les flux.
Modifié le 19 juil. 2017 à 11:32
public static void main(String[] args) throws IOException { Process p = Runtime.getRuntime().exec(new String[]{"ping","localhost"}); Charset charsetMsDosLatin1 = Charset.forName("Cp850"); print(p.getInputStream(), System.out, charsetMsDosLatin1); print(p.getErrorStream(), System.err, charsetMsDosLatin1); System.out.println(p.exitValue()); } public static void print(InputStream in, PrintStream out, Charset charset) { try (Scanner sc = new Scanner(in, charset.name())) { while (sc.hasNextLine()) out.println(sc.nextLine()); } }19 juil. 2017 à 11:49
Il n'existe pas d'alternative au c# de :
?
19 juil. 2017 à 11:51
19 juil. 2017 à 11:56
Après ce qu'il peut se passer c'est que le programme soit en attente de saisir quelque chose au clavier par exemple, dans ce cas il faut aussi se brancher sur ce flux.
Remarque : dans certains cas le code précédent (qui n'était qu'un exemple) peut également poser problème car on ne lit les messages d'erreurs qu'une fois tous les messages normaux lus, pour être complet il faudrait mettre ces deux codes dans des threads en parallèles qui affichent les deux flux en même temps.