Este artículo describe el método de implementación de Java para llamar a Jython a ejecutar archivos de Python. Compártelo para su referencia, como sigue:
Durante el desarrollo web, a menudo usa bibliotecas de terceros en el entorno local en el entorno web. Este artículo explica cómo Java ejecuta archivos Python.
Se dice en línea que hay tres métodos, pero de hecho solo hay dos métodos. El segundo método se introduce a continuación (Jython).
Método 1
java.lang.runtime runtime rt = runtime.getRuntime (); intente {Process Proc = rt.exec ("python /tmp/test.py"); } catch (Exception e) {E.PrintStackTrace (); }Aquí hay una subconcepción:
1. Runtime.getRuntime() puede obtener el entorno de tiempo de ejecución del JVM actual, que también es la única forma en Java para obtener el entorno de tiempo de ejecución.
2. La mayoría de los otros métodos en tiempo de ejecución son métodos de instancia, lo que significa que getRuntime debe usarse cada vez que se realiza la llamada de tiempo de ejecución.
3. El método de salida en tiempo de ejecución es un método para salir del JVM actual, que es probablemente el único. Porque vi esa salida en la clase del sistema en realidad sale del JVM llamando Runtime.exit() . Aquí explicaré las reglas generales de Java para el valor de retorno del tiempo de ejecución (también mencionado más adelante). 0 representa la salida normal, y no 0 representa el aborto anormal. Esto es solo una regla de Java. Siempre habrá alguna confusión menor en cada sistema operativo.
El segundo tipo (punto clave)
Llamar a Jython API
Paso 1: Agregar dependencias
<
Paso 2: cree una nueva clase de prueba. Java Test Class
importar org.python.util.pythoninterpreter; import java.util.properties;/** * Autor: Conozca Xiaoxing * Correo electrónico: [email protected] * fecha: 17-3-21 * Tiempo: 8:18 PM * Describe: Jpython Test */Public Class Test {Public Static Void Main (String [] Pythoninterpreter (); intérter.exec ("días = ('mod', 'martes', 'wed', 'thu', 'fri', 'sat', 'sol');"); intérter.exec ("Días de impresión [1];"); intérter.execfile ("/tmp/test.py"); intérter.exec ("imprimir 'creado por Tengxing en 2017.3'"); }}
Paso 3: Ejecutar Test.java
Las pruebas comenzaron a las 9:40 p.m. ... ¡Tuethis es test.pycreated por Tengxing en 2017.3!
El proceso ha terminado, el código de salida 0
El recordatorio puede informar la siguiente excepción:
Excepción en el hilo "principal" Importor: no puede importar el módulo del sitio y sus dependencias: no hay módulo llamado Sitio
Determine si los siguientes atributos son correctos:
Razón: python.import.site no se inicializa
resolver:
prueba de clase pública {public static void main (string [] args) {Properties props = new Properties (); propssput ("python.home", "ruta a la carpeta lib"); props.put ("python.console.encoding", "utf-8"); props.put ("python.security.respectJavaAccessibility", "falso"); propssput ("python.import.site", "falso"); Propiedades preprops = System.getProperties (); Pythoninterpreter.initialize (preprops, accesorios, nueva cadena [0]); Pythoninterpreter intérprete = nuevo PythonInterpreter (); intérter.exec ("días = ('mod', 'martes', 'wed', 'thu', 'fri', 'sat', 'sol');"); intérter.exec ("Días de impresión [1];"); intérter.execfile ("/tmp/test.py"); intérter.exec ("imprimir 'creado por Tengxing en 2017.3!'"); }}Ok perfecto
//Call the method in python and print the result PyFunction func = (PyFunction) interpreter.get("adder",PyFunction.class);int a = 2010, b = 2;PyObject pyobj = func.__call__(new PyInteger(a), new PyInteger(b));System.out.println("anwser = " + pyobj.ToString ());Artículo de referencia:
//www.vevb.com/article/137380.htm
//www.vevb.com/article/137385.htm
Anexo: jython.jar Haga clic aquí para descargar este sitio .
Para obtener más contenido relacionado con Java, los lectores interesados en este sitio pueden ver los temas: "Estructura de datos de Java y tutorial de algoritmo", "Resumen de las puntas de nodo de operación Java DOM", "Resumen de los archivos Java y consejos de operación de directorio" y "Summary of Java Cache Operation Tips" ".
Espero que este artículo sea útil para la programación Java de todos.