2015-07-28 2 views
3

Я хочу назвать сценарий python с Java. Мой питон версия 2.5 и Java является 6.Вызов Python из Java

Мой текущий код:

try{ 
    Process p= Runtime.getRuntime().exec("path/dirs/file.py"); 
    p.waitFor(); 
    } catch (InterruptedException ex){ 
    System.out.println(ex.getMessage());} 
    } 

Ошибка я получаю это:

java.io.IOException: Не удается запустить файл программы: ошибка CreateProcess = 193,% 1 не является допустимым приложением Win32

+0

Windoze не понимает '#! ...' в файлах скриптов. Нет никакого способа, чтобы это работало на всех системах Windoze, вам нужно было бы явно вызвать исполняемый файл Python и поставить скрипт в качестве аргумента. –

ответ

2

Попробуйте использовать PrecessBuilder -

try{ 

    String prg = "import sys\nprint int(sys.argv[1])+int(sys.argv[2])\n"; 
    BufferedWriter out = new BufferedWriter(new FileWriter("test1.py")); 
    out.write(prg); 
    out.close(); 
    int number1 = 10; 
    int number2 = 32; 

    ProcessBuilder pb = new ProcessBuilder("python","test1.py",""+number1,""+number2); 
    Process p = pb.start(); 

    BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream())); 
    int ret = new Integer(in.readLine()).intValue(); 
    System.out.println("value is : "+ret); 
}catch(Exception e){System.out.println(e);} 

См. here более подробно.

0

Вы можете запустить только исполняемый файл Windows, такой как EXE или BAT-файл, используя функцию Runtime.exec. Вам нужно найти способ создания экземпляра интерпретатора Python, а затем указать имя файла с помощью .BAT-файла.

0

Самый простой способ интегрировать приложение Java с Python - использовать Jython.

Я использовал это успешно в прошлом, чтобы создавать скриптовые Java-приложения, прежде чем мы получили доступ к Nashorn, и это похоже.

0

попробовать это, Это работает для меня

test_python.py

def addition(a,b): 
    c=a+b 
    return(c) 

interpreterPython.java

package com.pythonconnect; 
import org.python.util.PythonInterpreter; 

public class interpreterPython { 
    public static void main(String[] args) { 
     System.setProperty("python.cachedir.skip", "true"); 
     PythonInterpreter interpreter = new PythonInterpreter(); 
     interpreter.execfile("test_python.py"); 
     interpreter.exec("print(addition(7,8))"); 
    } 
}