2017-04-24 6 views
1

J'ai un code Java qui appelle un script Python:Obtenez la sortie d'erreur de script Python appelé de Java

String[] cmd = new String[]{"python", "path/to/script", "arg1", "arg2"} 
Runtime rt = Runtime.getRuntime(); 
Process pr = rt.exec(cmd); 

Tant que le script Python contient aucune erreur, il fonctionne très bien, mais dès qu'il le fait pauses. Cependant, je ne reçois pas le message d'erreur que je recevrais si j'exécutais le script Python directement à partir de la ligne de commande, donc je dois me chercher ce qui s'est mal passé. Pas très efficace.

Est-il possible d'obtenir ce message en ajoutant des lignes à mon code Java?

+0

Cela a résolu mon problème: 'proc.getErrorStream()' était ce que je cherchais. Si vous écrivez votre commentaire en réponse, je peux l'accepter. (Et l'erreur qui a brisé le script et que je ne pouvais pas trouver: j'ai oublié un deux-points après un 'elif' ...) – rdv

+0

*" J'ai oublié un deux-points après un 'elif' ...)" * Ces sortes d'erreurs nous tous. C'est une bonne chose qu'il y ait une sortie d'erreur. –

Répondre

1

Voir When Runtime.exec() won't pour de nombreux bons conseils sur la création et la gestion d'un processus correctement. Puis ignorez qu'il se réfère à exec et utilisez un ProcessBuilder pour créer le processus. Divisez également un String arg en String[] args pour prendre en compte des éléments tels que les chemins contenant des caractères espace.

Maintenant, pour les détails du problème en cours, il semble que ce soit la sortie du flux d'erreurs qui manque. Comme vous l'avez noté, l'appel proc.getErrorStream() et le traitement de cette sortie doivent répondre à l'exigence.