Java Runtime exec() Method



Description

The Java Runtime exec(String[] cmdarray, String[] envp) method executes the specified command and arguments in a separate process with the specified environment. This is a convenience method. An invocation of the form exec(cmdarray, envp) behaves in exactly the same way as the invocation exec(cmdarray, envp, null).

Declaration

Following is the declaration for java.lang.Runtime.exec() method

public Process exec(String[] cmdarray, String[] envp)

Parameters

  • cmdarray − array containing the command to call and its arguments.

  • envp − array of strings, each element of which has environment variable settings in the format name=value, or null if the subprocess should inherit the environment of the current process.

Return Value

This method returns a new Process object for managing the subprocess

Exception

  • SecurityException − If a security manager exists and its checkExec method doesn't allow creation of the subprocess

  • IOException − If an I/O error occurs

  • NullPointerException − If command is null

  • IndexOutOfBoundsException − If cmdarray is an empty array (has length 0)

Example

This example requires a file named example.txt in our CLASSPATH with the following contents −

Hello World!

Example: Opening a Notepad Application with Given Text File

The following example shows the usage of Java Runtime exec() method. In this program, we've a string array. Notepad.exe and test.txt entries are added. We've created a Process object for notepad executable using exec() method. This will invoke the notepad application and test.txt will be opened. If some exception occurs, a corresponding stack trace is printed with error message. If test.txt is not present in current classpath, then Notepad will report error for non-existing file.

package com.tutorialspoint;

public class RuntimeDemo {

   public static void main(String[] args) {
      try {

         // create a new array of 2 strings
         String[] cmdArray = new String[2];

         // first argument is the program we want to open
         cmdArray[0] = "notepad.exe";

         // second argument is a txt file we want to open with notepad
         cmdArray[1] = "example.txt";

         // print a message
         System.out.println("Executing notepad.exe and opening example.txt");

         // create a process and execute cmdArray and currect environment
         Process process = Runtime.getRuntime().exec(cmdArray,null);

         // print another message
         System.out.println("example.txt should now open.");
      } catch (Exception ex) {
         ex.printStackTrace();
      }
   }
}

Output

Let us compile and run the above program, this will produce the following result −

Executing notepad.exe and opening example.txt
example.txt should now open.

Example: Opening a Calculator Application

The following example shows the usage of Java Runtime exec() method. In this program, we've a string array. calc.exe entry is added. We've created a Process object for calculator executable using exec() method. This will invoke the calculator application. If some exception occurs, a corresponding stack trace is printed with error message.

package com.tutorialspoint;

public class RuntimeDemo {

   public static void main(String[] args) {
      try {

         // create a new array of 1 string
         String[] cmdArray = new String[1];

         // first argument is the program we want to open
         cmdArray[0] = "calc.exe";

         // print a message
         System.out.println("Executing calc.exe");

         // create a process and execute cmdArray and currect environment
         Process process = Runtime.getRuntime().exec(cmdArray,null);

      } catch (Exception ex) {
         ex.printStackTrace();
      }
   }
}

Output

Let us compile and run the above program, this will produce the following result −

Executing calc.exe

Example: Opening a Windows Explorer Application

The following example shows the usage of Java Runtime exec() method. In this program, we've a string array. explorer.exe entry is added. We've created a Process object for calculator executable using exec() method. This will invoke the windows explorer application. If some exception occurs, a corresponding stack trace is printed with error message.

package com.tutorialspoint;

public class RuntimeDemo {

   public static void main(String[] args) {
      try {

         // create a new array of 1 string
         String[] cmdArray = new String[1];

         // first argument is the program we want to open
         cmdArray[0] = "explorer.exe";

         // print a message
         System.out.println("Executing explorer.exe");

         // create a process and execute cmdArray and currect environment
         Process process = Runtime.getRuntime().exec(cmdArray,null);

      } catch (Exception ex) {
         ex.printStackTrace();
      }
   }
}

Output

Let us compile and run the above program, this will produce the following result −

Executing explorer.exe
java_lang_runtime.htm
Advertisements