Tecnología

Inicio

Java Runtime Exec Tutorial

clase de tiempo de ejecución de Java proporciona acceso al entorno de ejecución en el que se ejecuta la aplicación. métodos exec de tiempo de ejecución le permiten ejecutar programas externos desde una aplicación Java. La ejecución de aplicaciones externas dentro de una aplicación Java le permite abrir una página web en un navegador, interactuar con utilidades del sistema operativo o el lanzamiento de una ventana de la consola.

Obtener el Runtime Environment

Todas las aplicaciones Java tienen una instancia del entorno de ejecución. Utilice el método de tiempo de ejecución getRuntime () para acceder a este objeto. Por ejemplo:

Rt = tiempo de ejecución Runtime.getRuntime ();

Ejecutar una aplicación externa

Tiempo de ejecución ofrece varias maneras de llamar al método exec, que devuelve un objeto de proceso. La forma más sencilla de ejecutar una aplicación externa es el método de tiempo de ejecución exec (cadena de comando), donde \ "comando \" es la línea de comandos que se ejecuta la aplicación. La siguiente llamada ejecuta las "ls \" \ comando para obtener una lista de directorios para el directorio raíz en un sistema Linux o Unix:

Proceso p = rt.exec (\ "ls / \")
IR

El método exec también se puede llamar con una matriz que contiene el comando y sus argumentos, el medio ambiente y los valores de las variables directorio de trabajo.

Obtener Información del Proceso

La clase Process proporciona acceso al flujo de entrada, flujo de salida, corriente de error y el valor de salida del proceso ejecutado.

El método Process.getInputStream proporciona acceso al proceso de "flujo de salida estándar a través de flujo de entrada de la aplicación. La corriente debe ser amortiguada. Continuando con el ejemplo anterior, el código siguiente accede a la salida de la \ "ls / \" comando imprime los resultados.

InputStream istrm = p.getInputStream ()
IR
InputStreamReader istrmrdr = new InputStreamReader (istrm)
IR
BufferedReader buffrdr = new BufferedReader (istrmrdr)
IR

datos de cadena
IR
while ((datos = buffrdr.readLine ())! = null) {
System.out.println (datos)
IR
}

Del mismo modo, puede capturar el flujo de error mediante el uso de procesos 'getErrorStream y utilizando una corriente de entrada en el buffer de manejar los datos. Su aplicación también puede enviar datos a la "corriente de entrada a través de proceso de flujo de salida de la aplicación. Utilice Proceso "método getOutputStream y amortiguar el flujo de salida.

Al salir

Capturar el valor de salida del proceso con el Procedimiento 'exitValue método para determinar si se terminó normalmente. Asegúrese de que el proceso ha salido método utilizando Proceso 'waitFor para hacer que el hilo actual que esperar a que el proceso para salir. Por ejemplo, capturar el valor de salida en una variable, que puede ser utilizado más tarde para tomar decisiones sobre cómo se procederá a su aplicación:

int ev = 0
IR
si (p.waitFor ()! = 0) {
ev = p.exitValue ()
IR
}

Un proceso puede ser sacrificadas por Proceso 'destruir método

consideraciones

Java 5 introdujo la clase ProcessBuilder para reemplazar Runtime.exec. ProcessBuilder hace que sea más fácil para personalizar el proceso, y proporciona un mejor control de iniciar el proceso.

advertencias

Una de las características principales del lenguaje de programación Java es su portabilidad para múltiples plataformas de computación. Llamar a los procesos externos que son específicos de un determinado sistema operativo mantiene su solicitud de ser portátil. Evitar el uso de Runtime.exec cuando existe un método para lograr el mismo objetivo en el lenguaje Java.