devxlogo

Launching Another Application from Java

Launching Another Application from Java

Question:
Is it possible to launch another application from aJava application (not an applet)?

Answer:
Yes. There are two classes of interest for performingsystem level functions such as this:

java.lang.Runtime and
java.lang.Process.

The Runtime class provides several flavors of the exec()method, which takes a command and executes it by creating a separate processusingfacilities provided by the OS you’re running on:

       public Processexec(String command);       public Process exec(String command, String envp[]);       public Process exec(String cmdarray[]);       public Process exec(String cmdarray[], String envp[]); 
exec() returns an instance of a Process which can then be used bythe Java application to interact with the launched program, waitfor it to finish, and so on.

The only tricky part in accomplishing this is getting hold of aRuntime object with which to call exec(). To get an instance ofa Runtime object, call:

Runtime.getRuntime() 
This method returns a static Runtime object similar to System.out,which is guaranteed to exist for every invocation of the program.

The following program demonstrates how to use these classes to launch anapplication from a Java program. It takes a command line as itsargument and simply executes it as if the user had invoked it. Notethat the program captures the output of the launched application bygetting an InputStream from the running Process and readingfrom it as if it were a normal stream.

import java.io.*;public class CmdExec {       public CmdExec(String cmdline) {               try {                       String line;                       Process p = Runtime.getRuntime().exec(cmdline);                       DataInputStream input = new DataInputStream(                                                       p.getInputStream());                       while ((line = input.readLine()) != null) {                               System.out.println(line);                       }                       input.close();               } catch (Exception err) {                       System.out.println(“EXEC failed: ” + err.toString());                       err.printStackTrace();               }       }       public static void main(String argv[]) {               new CmdExec(argv[0]);       }} 

devxblackblue

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist