NetBeans ortamında Java ile Command Prompt çalıştırmak ve sonucu almak

NetBeans IDE kullanarak yaptığımız bir Java programında Command Prompt kullanmak mümkün. Windows ortamında cmd.exe'yi çalıştırarak komutları girerken Unix ortamında terminal denilen pencerede komutları giriyoruz.
Bizim yapacağımız ise program çalıştığı ortamdaki command prompt çağırarak istediğimiz komutları çalıştırıp sonucunu gösterebilmek.
Java içerisinde var olan bir classdan yararlanacağız: Runtime

Örnek:

    Runtime rt = Runtime.getRuntime();

Yukarıdaki kod programın çalıştığı ortama göre farklı sonuçlar söndürecek. Bizde Runtime classındaki metotları kullanarak command prompt kullabileceğiz.


Şimdi NetBeans programını çalıştıralım. Daha sonra şu adımları takip edelim:
File -> New Project Java kategorisinden Java Desktop Application sekmesini seçin ve Next tuşuna basıp projeyi isimderip Projeyi oluşturun.
Desktop Application seçeneğini seçtiğimiz için NetBeans bize otomatik olarak aşağıdaki gibi bir arayüz oluşturacak.

Net beans java command prompt

Projemizi Desktop Application olarak oluşturduktan sonra ilk işlemlere başlayalım. Biz programızda bir tane text TextField, Button ve Label ekleyip Design penceresinde yerlerini düzenleyeceğiz. Ayrıca bu komponentleri sürükle bırak şeklinde Swing Controls sekmesinden ekleyeceğiz. İsimlenirme ve küçük basit dizayn yaptıktan sonra aşağıdakine benzer bir arayüz elde edeceğiz.

Net beans java command promp sonuc

TextField kutusuna command prompt içinde çalıştıracağımız kodu yazıp enter ya da enter buttonuna bastığımıza yazdığımız kodu çalıştıracak. Bunun için button'a design penceresinden çift tıkladığımızda click olay metotu oluşturulup kodları yazmamıza izin verecek. TextField kutusunda iken enter tuşuna bastığımza aynı metotu çağırması için aşağıdaki ayarları yapmamız gerek.

Net beans java command promp sonuc

Artık hem enter hemde buttona bastığımızda otomatik oluşturulan "jButton1ActionPerformed" metotu çağrılacak. Şimdi command prompt işlemlerini yapacak temel kodlara bakalım:

  // Çalışma ortamın classı alınıyor
    Runtime rt = Runtime.getRuntime();
    // command prompt ile komut çalıştırılıyor
    Process proc = rt.exec("komutu buraya yazıyoruz");

Yukarıdaki satırlar çalıştığında outputstream oluşacak bu yüzden bu çıktıları Thread olarak okumak daha mantıklı olacağından projemizde "MyRuntimeExecutionClass" adında bir class oluşturalım. Oluşturacağımız class komutların çıktılarını stream şekline okuyacak ve oluşturduğumuz Label nestesine çıktıyı yazacak.
"MyRuntimeExecutionClass" class kodunun tamamı:

class MyRuntimeExecutionClass extends Thread {
InputStream stream;
String message;
javax.swing.JLabel jlabel;
public  MyRuntimeExecutionClass (InputStream stream,javax.swing.JLabel jlabel)
{
this.stream=stream;
this.jlabel=jlabel;
}
// run metodu MyRuntimeExecutionClass nesnesini oluştutup start metotunu çağırında
// otomatik olarak çalışacak

    public void run() {
        try {
            // Komutu çalıştırdığımızda çıktıyı stream şeklinde okuyacak satırlarımız
            BufferedReader br = new BufferedReader(new InputStreamReader(stream));
            StringBuffer buffer = new StringBuffer();
            String line = null;
            while ( (line = br.readLine()) != null) {
                buffer.append(line);//.append("\n");
            }
            // çıktı mesajını alıyoruz
            message = buffer.toString();
            // Label nesnesine çıktımızı yazdırıyoruz
             jlabel.setText("Output: "+message);
        } catch (IOException ioe) {
            ioe.printStackTrace();
        }
     // thread çıktıyı okuduktan sonra kendini sonlandırsın
     this.yield();
    }

}

Yazdığımız bu classı aşağıdaki şekilde kullanacağız.(Buttan tıklandığında çağrılacak motoda yazıyoruz kodumuzu)

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:

        String command ;
        // Text kutusunun boş olup olmadığını kontrol et. Boş ise motodu sonlandır.
        if (jTextField1.getText().length() >0 )

        {  command = jTextField1.getText();}

        else
        {
            jLabel1.setText("Command alanı boş bırakılamaz");
            return;
        }
        // Command Promptu kullanmamıza yarayacak Runtime nesnesi
        Runtime rt = Runtime.getRuntime();
        // komutu çalıştırdığımızda dönecek InputStream nesneleri için kullanacağımız
        // m (message) e(error) nesneleri
        InputStream m,e;

        try {
            // Komutu çalıştırıyoruz
            Process proc = rt.exec(command);
            // hatayı okuyacak InputStream tipindeki e nesnesi
            e=proc.getErrorStream();
            // hatasız çıktıyı okuyacak InputStream tipindeki m nesnesi
            m=proc.getInputStream();
            // Stream okuyacak classımızı burada oluşturuyoruz
            MyRuntimeExecutionClass mes =new MyRuntimeExecutionClass(e,jLabel1);
            MyRuntimeExecutionClass er =new MyRuntimeExecutionClass(m,jLabel1);
            // strat metodu ile Thread olarak InputStream nesnemizi okutuyoruz
            er.start();
            mes.start();

            }
            catch (IOException er) {
              jLabel1.setText(command+":komut hatalı");
            }

    }

Artık NetBeans ile yaratmış olduğumuz proje ile Command Prompt komutlarını Java dilinden çalışırabiliriz. Text kutusuna sunucuya pingleme yapan komutu yazdığımızda pingleme sonucu oluşan raporu yarattığımız label içerisine işlem bittiğinde stirng olarak yazdırıp bize gösterecek.

Command Prompt ile çıktıyı sadece string olarak değil her hangi bir programı çalıştırmak içinde kullanabiliriz. Mesela "calc" komutu ile hesap makinesi programını çalıştırabiliriz: .

Net beans java command promp sonuc

Özetle NetBeans kullanarak hızlıca bir arayüz hazırladık. Olaylar ekledik. Projemize class ekledik ve Command Prompt ile komutları çalıştırdık. Proje dosyalarının tamamını içeren arşivi command-prompt-netbeans-java linkinden indirip kod üzerinde NetBeans ile oynayabilirsiniz.

Kaynak :

| viralpatel.net

yazan Zülküf Küçüközer tarih   23rd August 2009
primary key words  Java se | Java | Command prompt okunma  10197
secondary key words  Netbeans
Bu yazı hakkında yorum yapılmamış.