Java Programming‎ > ‎Tool Tips‎ > ‎

Mengeksekusi Aplikasi External (Command Line)

posted Sep 21, 2011, 6:45 AM by Editor KursusInternet   [ updated Oct 2, 2011, 2:15 AM ]

Pendahuluan

Kadangkala, untuk berbagai hal tertentu banyak hal yang bisa dilakukan aplikasi lain lebih baik atau karena pustaka Java yang melakukan hal yang sama belum ada atau terkendala berbagai hal sehingga tidak bisa digunakan.

Untuk hal tersebut kita bisa melakukan interface dengan aplikasi tersebut - biasanya command line - dengan menggunakan method start() dari class ProcessBuilder untuk membuat instance Process baru.

Variasi dari method ini cukup banyak, namun potongan syntax penggunaan yang paling sederhana adalah sebagai berikut :
public ProcessBuilder(List<String> command)
dan eksekusi start() dari object ProcessBuilder akan mengembalikan objek Process yang digunakan untuk mendapatkan info hasil eksekusi.

Berikut adalah beberapa contoh dari pengambilan hasil listing direktori menggunakan dir sampai menghasilkan gambar dengan Graphviz yang dieksekusi dari Java.

Contoh Kode : Mengambil hasil eksekusi perintah "Dir"

Karena aplikasi Java dari penulis akan dijalankan melalui Eclipse pada Windows XP, maka eksekusi perintah dir perlu dilakukan melalui aplikasi command interpreter. Perintah lengkapnya adalah "cmd /C dir".

Perintah "cmd /C" memiliki arti bahwa command interpreter akan mengeksekusi string / teks yang menjadi argumen dari perintah ini dan kemudian berhenti dan menutup dialog / proses.



package com.kursusinternet.tips;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class EksekusiDir {
  public static void main(String[] args) {

    //Inisialisasi Command dan Reader
    String[] myargs = {"CMD.exe","/C","dir"};
    ProcessBuilder procBuilder = new ProcessBuilder(myargs);

    Process proc = null;
    BufferedReader reader = null;
    
    try {
      //Menjalankan Command
      proc = procBuilder.start();

      //Inisialisasi Reader
      reader = new BufferedReader(new InputStreamReader(proc.getInputStream()));    
    catch (IOException e) {
      //Inisialisasi Reader
      if(proc != null)
        reader = new BufferedReader(new InputStreamReader(proc.getErrorStream()));
    }
    finally
    {
      //Membaca & Menuliskan Hasil ke Console
      try {
        String text = "";
        while(text != null)
        {
          text = reader.readLine();
          System.out.println(text!=null? text : "");
        }      
      catch (IOException e) {
        e.printStackTrace();
      }
    }
  }
}

Contoh Hasil Eksekusi : Mengambil hasil eksekusi perintah "Dir"

 Volume in drive C has no label.
 Volume Serial Number is 747F-E714

 Directory of C:\Documents and Settings\Kursus\workspace\KursusInternet

08/06/2011  11:18 AM    <DIR>          .
08/06/2011  11:18 AM    <DIR>          ..
10/01/2011  11:09 PM               463 .classpath
09/15/2011  11:12 AM               390 .project
07/29/2011  05:58 PM    <DIR>          .settings
10/02/2011  12:30 AM    <DIR>          bin
08/06/2011  07:14 AM               185 newfile.html
10/02/2011  12:30 AM    <DIR>          src
               3 File(s)          1,038 bytes
               5 Dir(s)   8,361,476,096 bytes free



Contoh : Menghasilkan File Gambar menggunakan Graphviz

Contoh berikutnya berkaitan dengan penggunaan Graphviz pada artikel 03. Menggunakan Style HTML pada Record, dimana kita akan menghasilkan file PNG dengan aplikasi dot.exe yang menerjemahkan file record_html_phi_minimart.dot.

Langsung saja, berikut adalah contoh kode potongan program untuk melakukan hal tersebut.

Perintah command line dari aplikasi dot yang digunakan adalah :

dot.exe -Tpng:cairo c:\kursusinternet.com\Graphviz\record_html_phi_minimart.dot
-o c:\kursusinternet.com\Graphviz\record_html_phi_minimart.png

Dan berikut adalah potongan program Java untuk mengeksekusi perintah tersebut.



package com.kursusinternet.tips;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class EksekusiGraphviz {
  public static void main(String[] args) {

    //Inisialisasi Command dan Reader
    String[] myargs = {
        "dot.exe",
        "-Tpng:cairo",
        "c:/kursusinternet.com/graphviz/record_html_phi_minimart.dot",
        "-o",
        "c:/kursusinternet.com/graphviz/record_html_phi_minimart.png"
    };    
    ProcessBuilder procBuilder = new ProcessBuilder(myargs);

    Process proc = null;
    BufferedReader reader = null;

    try {
      //Menjalankan Command
      proc = procBuilder.start();

      //Inisialisasi Reader
      reader = new BufferedReader(new InputStreamReader(proc.getInputStream()));    
    catch (IOException e) {
      //Inisialisasi Reader
      if(proc != null)
        reader = new BufferedReader(new InputStreamReader(proc.getErrorStream()));
      e.printStackTrace();
    }
    finally
    {
      //Membaca Hasil
      try {
        String text = "";
        while(text != null)
        {
          text = reader.readLine();
          System.out.println(text!=null? text : "");
        }      
      catch (IOException e) {
        e.printStackTrace();
      }
    }
  }
}


Hasil Eksekusi : Menghasilkan File Gambar menggunakan Graphviz

Berikut adalah posisi folder sebelum dan sesudah eksekusi file :


Dan hasil gambar output dari aplikasi dot sendiri tampak sebagai berikut.




~~~ Selesai ~~~
Comments