2016-03-14 4 views
0

Я пытаюсь понять Jython. У меня есть некоторые алгоритмы, написанные на Python, которые я хочу интегрировать в Java. Документы Jython очень сложны для понимания. Все, что я мог бы получить от них то, что я могу запускать отдельные операторы Python из Java, встраивая их следующим образом:Интеграция Python в Java - мы можем напрямую вызвать файлы .py?

interp = new PythonInterpreter(); 
     interp.exec("import sys"); 
     interp.exec("print sys"); 

Но я не могу вставлять свои гигантские алгоритмы, как это. Мне нужно запустить скрипты py. Есть ли способ сделать это? Могу ли я получить пример hello world, где оператор print("hello") написан в файле сценария py, а вывод показан на консоли Java?

+1

Не можешь используйте 'PythonInterpreter.execfile()'? См. Http://www.jython.org/javadoc/org/python/util/PythonInterpreter.html#execfile(java.lang.String). – mzjn

ответ

2

Jython его лучший вариант

еще вы можете запустить программу питона из Java с помощью командной строки и собрать вывод обратно в Java

как, например:

ProcessBuilder builder = new ProcessBuilder(
       "cmd.exe", "/c", "C:\\Python27\\python.exe C:\\Users\\Bens\\Desktop\\test.py"); 
     builder.redirectErrorStream(true); 
     Process p = builder.start(); 
     BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream())); 
     String line; 
     while (true) { 
      line = r.readLine(); 
      if (line == null) { 
       break; 
      } 
      System.out.println(line); 
     } 
    } catch (IOException ex) { 
     Logger.getLogger(TCPServer.class.getName()).log(Level.SEVERE, null, ex); 
    } 
+0

Эй вы можете посоветовать мне, как это сделать в Linux? –

+0

вы можете использовать String [] commands = new String [] {"/ bin/sh", "-c", command}; ProcessBuilder builder = новый ProcessBuilder (команды); если в случае debian вы можете попробовать "/ bin/bash" вместо "/ bin/sh" –

Смежные вопросы