Je ne connais rien à Jython et autres. Je suppose que c'est la meilleure solution si vous pouvez exécuter deux programmes sans exécuter un nouveau processus chaque fois que l'application Java doit transformer du texte. De toute façon, une simple preuve de concept consiste à exécuter un processus séparé de l'application Java pour le faire fonctionner. Ensuite, vous pouvez améliorer l'exécution avec tous ces outils.
Exécution d'un processus distinct de Java
String[] envprops = new String[] {"PROP1=VAL1", "PROP2=VAL2" };
Process pythonProc = Runtime.getRuntime().exec(
"the command to execute the python app",
envprops,
new File("/workingdirectory"));
// get an outputstream to write into the standard input of python
OutputStream toPython = pythonProc.getOutputStream();
// get an inputstream to read from the standard output of python
InputStream fromPython = pythonProc.getInputStream();
// send something
toPython.write(.....);
// receive something
fromPython.read(....);
Important: les caractères ne sont PAS octets
Beaucoup de gens ce-estiment.
Soyez prudent avec char conversions d'octets (souvenez-vous des écrivains/Les lecteurs sont pour les caractères, entrée/OutputStreams sont pour les octets, l'encodage est necesary pour convertir un un à l'autre, vous pouvez utiliser OuputStreamWriter
pour convertir la chaîne en octets et envoyer, InputStreamReader
à convertir les octets en caractères et les lire).
Comment entrée prendre le programme python? Cela n'a pas beaucoup de sens, lit-il dans un répertoire toutes les X minutes, ou depuis STDIO? Est-ce que vous exécutez le code vous-même ou quoi? – Petriborg