desde - conectar java con python
Llamar a Python desde Java (4)
Quiero llamar a un script de python
desde Java. Mi versión de Python es 2.5 y Java es 6.
Mi código actual:
try{
Process p= Runtime.getRuntime().exec("path/dirs/file.py");
p.waitFor();
} catch (InterruptedException ex){
System.out.println(ex.getMessage());}
}
El error que recibo es:
Java.IO.IOException: No se puede ejecutar el nombre de archivo del programa: CreateProcess error = 193,% 1 no es una aplicación Win32 válida
Intenta usar 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);}
Vea aquí de más detalles.
Puede ejecutar solo un ejecutable de Windows como un archivo EXE o BAT utilizando la función Runtime.exec. Necesita encontrar una forma de instanciar el intérprete de Python y luego dar el nombre del archivo usando un archivo .BAT.
prueba esto, esto funciona para mí
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))");
}
}