2010-09-29 7 views
3

j'ai développé un utilitaire de ligne de commande qui doit être appelée à partir d'une application Java GUI. L'équipe responsable de l'interface graphique Java aimerait lier mon application de ligne de commande à un bouton de l'interface graphique; l'application Python est telle qu'à ce moment nous n'avons pas le temps ou l'intérêt de la réécrire en Java.utilitaire de ligne de commande Python à partir de Java

J'ai aucune expérience en Java, je vous demande donc:

Quelle est la meilleure façon de lier une application Python en ligne de commande à un bouton dans une application GUI Java?

Je suis très préoccupé par la gestion des exceptions (comment dire Java Python n'a pas).

Merci.

Répondre

1

Vous devriez être en mesure d'exécuter un processus donné naissance à de Java en utilisant Runtime.exec(). Here's some examples.

Assurez-vous de capturer stdout et stderr (simultanément - voir this answer pour plus de détails) afin de pouvoir signaler les erreurs. Vous pouvez capturer le code de sortie de l'application, donc assurez-vous que l'application elle-même signale correctement les erreurs. Le code d'erreur serait un moyen plus fiable de détecter les erreurs (je suppose) lors de l'analyse des flux de sortie.

+0

Merci Brian. Je suis d'accord - il est préférable de s'assurer que le script Python renvoie des codes de sortie (entiers) plutôt que des messages. Merci beaucoup. – Escualo

0

Avez-vous envisagé Jython? Vous pouvez: 1) l'utiliser pour exécuter des scripts python (lui permettant d'appeler des classes Java) 2) compiler python en fichiers de classe, les rendant utilisables par le code Java normal sans que jython soit présent à l'exécution Je l'ai seulement utilisé dans le premier modèle, mais j'ai vu des tonnes de docs sur le second.

0

Je suis d'accord avec Phlip - vous pouvez créer un moteur de script en Java et l'utiliser pour appeler votre code Python. Si votre code python n'utilise pas d'appels de bibliothèque ou de DLL spécifiques au système d'exploitation, cela devrait fonctionner correctement. Ce lien: http://jythonpodcast.hostjava.net/jythonbook/chapter10.html devrait vous donner plus d'informations sur le mécanisme exact dont vous avez besoin.

Questions connexes