Klic zunanjih programov iz javanskih aplikacij



Uvod

Pozabimo na prenosljivost javanskih aplikacij  in si oglejmo metodo, ki jo lahko uporabimo za klic zunanjih programov  iz javanskih aplikacij.

Poganjanje zunanjih sistemskih ukazov je relativno preprosto. Zahteva uporabo razredov, razred Runtimein razred Process. Uporabimo metodo  exec( )  iz razreda  Runtime in ustvarimo nov,  samostojen  podproces. Metoda vrne razred Process za uporabo podprocesa. Nato lahko z metodami getInputStream( ), getOutputStream( ) in getErrorStream( ) razreda Process za branje tistega, kar vrne sproženi program, in za pisanje vanj.
 
 

Delujoč primer

 
import java.io.*;

public class RunCommand {
    public static void main(String args[ ]) {
        String s = null;

        try {                  
            Process p = Runtime.getRuntime( ).exec("notepad.exe");
             BufferedReader stdInput = new BufferedReader(new 
                   InputStreamReader(p.getOutputStream( )));

            // read the output from the program (if any)
            
            System.out.println("Here is the standard output of the program:\n");
            while ((s = stdInput.readLine( )) != null) {
                System.out.println(s);
            }  
            System.exit(0);
        }
        catch (IOException e) {
            System.out.println("Nekaj je narobe: ");
            e.printStackTrace();
            System.exit(-1);
        }
    }
}


Kako deluje

Najprej določimo program, ki ga želimo izvršiti, ki ga podate razredu Runtime. Ker ne moremo ustvariti lastne instance razreda Runtime, najprej uporabimo  metodo getRuntime( ) , da bi lahko dostopali do trenutnega izvajalnega okolja (ang. runtime environment) in zatem pokličemo  exec() metodo, ki vrne razred Process.

Vse ostalo se vrti okoli metod razreda Process. V našem primeru, ker poganjamo  beležnico (notepad). Branje standardnega izhoda  v tem primeru ni potrebno in je le nakazano, kako bi to šlo.
 
 

avtor: Kemal Posedi