ProcessBuilder ne fonctionne pas à partir d'un serveur weeb
DeadPool33
Messages postés
14
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'essai d'exécuté un .EXE externe à partir de mon server web.
mon code fonctionne super bien lorsque je roule mon code en local ,mais
lorsque je le déploie sur mon server, l'exécutable ne fonctonne pas.
J'ai tenter de mondifier les variables d'environnement du ProcessBuilder mais sans succes.
Je suis à court d'idée..
Merci de bien vouloir m'aider
voici le code que j'utilise et qui fonctionne en local :
J'essai d'exécuté un .EXE externe à partir de mon server web.
mon code fonctionne super bien lorsque je roule mon code en local ,mais
lorsque je le déploie sur mon server, l'exécutable ne fonctonne pas.
J'ai tenter de mondifier les variables d'environnement du ProcessBuilder mais sans succes.
Je suis à court d'idée..
Merci de bien vouloir m'aider
voici le code que j'utilise et qui fonctionne en local :
try{
ProcessBuilder processBuilder = new ProcessBuilder("pathtoExe\\executable.exe");
processBuilder.redirectErrorStream(true);
processBuilder.redirectOutput();
processBuilder.redirectInput();
Process process = processBuilder.start();
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
String s;
System.out.printf("Output of running is:");
while ((line = br.readLine()) != null) {
System.out.print("ligne out: ");
System.out.println(line);
}
BufferedReader stdError = new BufferedReader(
new InputStreamReader(process.getErrorStream()));
while ((s = stdError.readLine()) != null) {
System.out.println(s);
}
process.waitFor();
System.out.println(process.exitValue());
}
catch (IOException | InterruptedException e) {
e.printStackTrace();
}
A voir également:
- ProcessBuilder ne fonctionne pas à partir d'un serveur weeb
- Creer un groupe whatsapp a partir d'un autre groupe - Guide
- Changer serveur dns - Guide
- Comment faire une recherche à partir d'une photo - Guide
- Serveur diff message ✓ - Forum Mobile
- Serveur dns gratuit - Guide
1 réponse
Bonjour,
Ton code fonctionne cependant je le trouve maladroit notamment sur la consommation des flux. Voici une alternative :
Quant à ton problème, de quel serveur on parle ?
Où est le fichier .exe sur le serveur ?
Ton code fonctionne cependant je le trouve maladroit notamment sur la consommation des flux. Voici une alternative :
private static Thread consume(InputStream in, Consumer<String> out) { Thread t = new Thread(() -> { try (Scanner sc = new Scanner(in)) { while (sc.hasNextLine()) out.accept(sc.nextLine()); } }); t.setDaemon(true); t.start(); return t; }
Process process = new ProcessBuilder("pathtoExe/executable.exe").start(); Thread out = consume(process.getInputStream(), line -> System.out.println("STDOUT: " + line)); Thread err = consume(process.getErrorStream(), line -> System.err.println("STDERR: " + line)); if (process.waitFor(5, TimeUnit.SECONDS)) { System.out.println("EXIT: " + process.exitValue()); out.join(); err.join(); } else { System.err.println("TIMEOUT !"); }
Quant à ton problème, de quel serveur on parle ?
Où est le fichier .exe sur le serveur ?
Est-ce que tu as essayés mon code ?
Quand je dit rien, et bien avec ton code par exemple, je reçois" exit : 0" comme message et c'est tout...aucun autre message ou erreur...
Il est censé faire quoi ton programme ?