Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 270
  • Last Modified:

How to run external program in java?

I try to run sqlldrin my java code. I wrote a small to test if exec is working. The code is as following:

try {
      System.out.println("Starting");
      Process p = Runtime.getRuntime().exec("ping 127.0.0.1");
      p.waitFor();
      if ( p.exitValue() ==0)
      {
           System.out.println("done");
      }
}catch (IOException ioe){
     System.out.println(ioe);
}catch (InterruptedException ie){
     System.out.println(ie);
}

It doesn't work. It seems it will stop there forever.I run it on Windows 2000. Please help me figure out why?

Thanks.

0
jen2483
Asked:
jen2483
1 Solution
 
kiranhkCommented:
Check out this link
http://www.idevelopment.info/data/Programming/java/PROGRAMMING_Java_Programming.shtml

in that check out Running External OS Commands


the following is the program from the site which u can use


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

/*
 * Created on Oct 11, 2004
 *
 */

public class TestCode {

    public static void main(String[] args) {
       
        String s = null;

        try {
           
            // run the Unix "ps -ef" command
           
            Process p = Runtime.getRuntime().exec("ping localhost");
           
            BufferedReader stdInput = new BufferedReader(new
                 InputStreamReader(p.getInputStream()));

            BufferedReader stdError = new BufferedReader(new
                 InputStreamReader(p.getErrorStream()));

            // read the output from the command
           
            System.out.println("Here is the standard output of the command:\n");
            while ((s = stdInput.readLine()) != null) {
                System.out.println(s);
            }
           
            // read any errors from the attempted command

            System.out.println("Here is the standard error of the command (if any):\n");
            while ((s = stdError.readLine()) != null) {
                System.out.println(s);
            }
           
            System.exit(0);

        } catch (IOException e) {
            System.out.println("[IOException]. Printing Stack Trace");
            e.printStackTrace();
            System.exit(-1);
        }        
    }
}
0
 
GrandSchtroumpfCommented:
it works fine on my XP machine
0
 
GrandSchtroumpfCommented:
this is a version i found in my archives that echoes the output of the ping:

import java.io.*;

class ProcessReadOut {
  public static void main(String[] args) {
    try {
      String command  = "ping localhost";
      Runtime rt = Runtime.getRuntime();
      Process p = rt.exec(command);
      InputStream in = p.getInputStream();
      InputStreamReader inReader = new InputStreamReader(in);
      BufferedReader bInReader = new BufferedReader(inReader);
      String currRead;
      while ((currRead = bInReader.readLine()) != null) {
        System.out.println("from java -> " + currRead);
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}
0
 
objectsCommented:
there's also an example of reading exec() output at:

http://www.objects.com.au/java/examples/util/ConsoleExec.do
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now