В прошлом посте было рассмотрено подключение интерпретатора Jyton к программе на Java и передачи ему команды в виде строкового выражения. Рассмотрим пример выполнения скрипта переданного интерпретатору из внешнего файла.
Допустим у нас имеется питоновский модуль находящийся в папке "
Script":
 
- class ScriptDemo():  
-  def __init__(self,my):  
-   print "Script Demo init" + my  
-  def ret(self):  
-   return "esss"  
-  def retint(self, i):  
-   return i*2  
 
Доработаем немного предыдущий пример под работу с данным модулем.
- import java.io.FileNotFoundException;  
- import java.io.FileReader;  
-   
- import javax.script.ScriptEngine;  
- import javax.script.ScriptEngineManager;  
- import javax.script.ScriptException;  
-   
-   
- public class Start {  
-    
-  public static void main(String[] args) throws ScriptException, FileNotFoundException, NoSuchMethodException {  
-   
-  ScriptEngineManager factory = new ScriptEngineManager();   
-  ScriptEngine engine = factory.getEngineByName("jython");  
-  //считываем текстовый файл скрипта  
-         FileReader script = new FileReader("Script\\script.py");  
-         //передаем его интерпретатору   
-         engine.eval(script);  
-         //передаем в переменную а строковое значение  
-         //эту переменную можно будет использовать при вызове питоновских методов  
-         engine.put("a"," from java1");  
-         //создаем объект класса скрипта  
-         engine.eval("obj = ScriptDemo(a)");  
-         //присваиваем объекту an значение возвращенное питоновским методом ret   
-         //значение всегда возвращается типа Object   
-         Object an = engine.eval("obj.ret()");  
-         System.out.println(an.toString());  
-         int n=3;  
-         engine.put("b",n);  
-         Object bn = engine.eval("obj.retint(b)");  
-         System.out.print(  new Integer(bn.toString()));  
-  }  
-   
- }  
В результате выполнения программы получаем следующий вывод
Script Demo init from java1
esss
6