بررسي متد Exec از كلاس Runtime جهت فراخواني و اجراي برنامه هاي كاربردي توسط جاوا

سايت مرجع زبان برنامه نويسي جاوا    Java.TadbirPoya.ir> Articles> Java SE> Java IO> How To Execute Other Program In Java by Runtime.exec 

 چگونه برنامه هاي كاربردي خارجي را در داخل جاوا اجرا كنيم؟

 

 

تکنولوژيهای جاوا
Java SE
Java EE
Java ME
JasperReports

 

لينك هاي مفيد
تدبيرگران پوياپرداز
دانلود هاي جاوا
آموزش جاوا
بازگشت
خانه

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 شماره مقاله  :   41

      تاريخ ايجاد :      1388/05/29

        تاريخ ويرايش :   1388/05/29

        دفعات بروز رساني :    0 

  نويسنده : سيد علي عبدالهي پور

 

  چگونه در جاوا مي توان برنامه هاي كاربردي ديگر را اجرا نمود؟

 

 يكي از امكانات قابل توجه در جاوا، توانايي اجراي ساير برنامه هاي كاربردي ديگر توسط محيط جاوا مي باشد. بطور مثال فرض كنيد قصد اجراي برنامه MS EXCEL را در جاوا داريد. به كمك اين ويژگي شما قادر به انجام چنين عملي مي باشيد. در جاوا كلاسي با نام Runtime  وجود دارد كه يكي از كلاس هاي بسته java.lang مي باشد. اين كلاس متدي با نام exec دارد كه توسط اين متد شما قادر به اجراي برنامه هاي كاربردي موجود در سيستم خود مي باشيد.

نكته مهم ديگر قبل از استفاده از اين متد آن است كه ابتدا بايد به محيط اجراي جاوا يا Java Runtime Environment دسترسي پيدا نماييد. براي رسيدن به اين هدف، بايد از يك متد Static، با نام getRuntime استفاده نماييم. بعد از انجام اين عمل قادر خواهيم بود تا برنامه هاي كاربردي مورد نظر را اجرا نماييم.

متد exec داراي شش فرم مي باشد كه عبارتند از:

public Process exec(String command);

public Process exec(String [] cmdArray);

public Process exec(String command, String [] envp);

public Process exec(String [] cmdArray, String [] envp);

public Process exec(String command, String [] envp, File  dir);

public Process exec(String [] cmdArray, String [] envp, File dir);

 

در تمام اين حالات، يك يا مجموعه اي از Command ها كه همان نام و آدرس برنامه اجرايي مي باشد به همراه يك يا مجموعه اي ااز آرگومان هاي ورودي در صورت نياز به يكي از شش فرم فوق ارسال مي شود. در ادامه با ذكر مثال هايي نحوه كار با اين متد بطور كامل شرح داده خواهد شد.

بطور كلي سه مقدار را مي توان به عنوان آرگومان هاي ورودي به اين متد ارسال نمود.

1- يك رشته شامل نام برنامه و آرگومان هاي مورد نياز براي اجراي برنامه «بصورت يكجا».

2- آرايه اي از نوع رشته كه برنامه اجرايي را از آرگومانهاي آن جدا مي كند.

3- آرايه از متغيرهاي محيطي بصورت name=value.

 

براي شروع كار ابتدا قصد داريم تا برنامه Notepad.exe را اجرا نماييم. براي انجام اين كار بصورت زير عمل مي كنيم.

import java.io.IOException;

public class runNotepad {
  public static void main(String args[]) throws IOException {

       Runtime.getRuntime().exec("Notepad");
    }
}

در اين مثال از اولين فرم متد exec براي اجراي برنامه Notepad استفاده شده است. نكته مهم در اين برنامه آن است كه براي اجراي برنامه هاي كاربردي در جاوا بايد آدرس كامل برنامه را به عنوان آرگومان به اين متد ارسال نماييد. در صورتيكه در اين برنامه به اين صورت عمل نشده است. علت اين امر آن است كه برنامه هايي مانند Notepad جز برنامه هاي شناخته شده در ويندوز مي باشد و نيازي به ذكر آدرس اين برنامه بصورت كامل نمي باشد.

اين برنامه را مي توانيد بصورت زير نيز تغيير داده و اجرا نماييد.

Runtime.getRuntime().exec("c:\\windows\\system32\\notepad.exe")

 

حال قصد داريم تا يك فايل متني را توسط برنامه Notepad اجرا نماييم. براي انجام اين كار بصورت زير عمل مي كنيم:

Runtime.getRuntime().exec("notepad  c:\\windows\\win.ini")

اكنون قصد داريم تا اجراي همين عمليات را با استفاده فرم دوم متد exec نمايش دهيم. براي انجام اين كار بصورت زير عمل مي كنيم:

String cmd[] = { "notepad", "C:\\windows\\win.ini" };
Runtime.getRuntime().exec(cmd);

 

در گام بعد به كمك عبارت زير مي توان برنامه Excel را اجرا نمود.

 Runtime.getRuntime().exec("cmd /c start excel.exe");
 

و يا با كمك عبارت زير يك فايل Help ويندوز را با كمك برنامه راه انداز فايل هاي Help اجرا نمود.

Runtime.getRuntime().exec("hh.exe wmplay.chm");

 

از جمله نكات ديگر زماني است كه ما قصد اجرا يكي از برنامه هاي تحت ويندوز مانند wordpad را كه در ProgramFiles قرار دارد را داشته باشيم. همچنين مي‌خواهيم برنامه را به گونه اي پياده سازي نماييم كه بتوان برنامه را در هر سيستمي و بدون توجه به درايو محل نصب ويندوز، اجرا نمود. براي انجام اين كار بصورت زير عمل مي نماييم.

 

public class Exec1 {
   static String WIN_PROGRAMFILES = System.getenv("programfiles");
   static String FILE_SEPARATOR = System.getProperty("file.separator");

   public static void main(String[] args) throws Exception {
      String[] commands =

       {
         WIN_PROGRAMFILES + FILE_SEPARATOR + "Windows NT" + FILE_SEPARATOR + "Accessories" + FILE_SEPARATOR + "wordpad.exe"

        };
      Runtime.getRuntime().exec(commands);
   }
}

در اين برنامه نشان داده شده است كه با كمك متد System.getenv و آرگومان ورودي programfiles، مي توان مسير پوشه ProgramFiles را بدست آورد. همچنين به كمك متد  System.getProperty و آرگومان ورودي file.separator، كاراكتري را كه به عنوان جدا كننده اجزاء آدرس مورد استفاده قرار مي گيرد را نيز بدست آوريم. با كمك دو مورد فوق ديگر نياز نيست تا آدرس برنامه مورد نظر را بصورت دستي به متد exec ارسال نماييم و برنامه خود با تغيير محل قادر به شناسايي مسير جديد مي باشد.

 

قابليت ديگر متد exec آن است كه مي تواند با توابع سيستمي موجود در سيستم عامل نيز كار كند. به عنوان مثال در برنامه زير نحوه اجرا يك فايل Pdf با استفاده از اين روش نمايش داده شده است.

public class ShowPDF {
   public static void main(String[] args) throws Exception {
      Process p = Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler c:/pdf/mypdf.pdf");
      p.waitFor();
      System.out.println("Done.");
   }
}

نكته ديگري كه در اين برنامه وجود دارد، بكارگيري متد waitFor مي باشد. استفاده از اين متد سبب مي شود تا برنامه جاوا پس از اجراي يك برنامه كاربردي، تا زمان اجراي كامل آن برنامه منتظر بماند و كار ديگري انجام ندهد.

 

دانلود برنامه هاي مورد استفاده در اين مقاله

مطالب موجود در اين سايت به جهت ارتقاء سطح علمي برنامه نويسان جاوا تهيه و تنظيم شده است. در صورت تمايل مي توانيد مطالب خود را در جهت اصلاح يا ارتقاء مقالات موجود و يا ايجاد مقالات جديد به آدرس ايميل زير ارسال نماييد.

 JArticles@TadbirPoya.ir

استفاده از مطالب موجود در سايت با ذكر منبع بلامانع است.

Copyright @2008-2009 TadbirPoya.ir Co.All rights reserved