Trying to execute a Java jar with Runtime.getRuntime().exec()
Use the Process
instance returned by exec()
Process cat = Runtime.getRuntime().exec("java -jar C:/cat.jar C:/test.txt");
BufferedInputStream catOutput= new BufferedInputStream(cat.getInputStream());
int read = 0;
byte[] output = new byte[1024];
while ((read = catOutput.read(output)) != -1) {
System.out.println(output[read]);
}
References:
http://docs.oracle.com/javase/7/docs/api/java/lang/Process.html
By default, the created subprocess does not have its own terminal or console. All its standard I/O (stdin, stdout, stderr) operations will be redirected to the parent process, where they can be accessed via the streams obtained using the methods getOutputStream(), getInputStream(), and getErrorStream().
http://docs.oracle.com/javase/7/docs/api/java/lang/Process.html#getInputStream()
getInputStream() returns the input stream connected to the normal output of the subprocess.
Envin
Updated on June 04, 2022Comments
-
Envin almost 2 years
In the project I am working on, I need to execute a script that I have in a resources folder -- in the class path. I am simply testing the final script functionality, since I am on Windows, I needed a way to output a file to STDIN so I created a simple cat.jar program to clone unixs cat command.
So when I do "java -jar cat.jar someFile.txt" it will output the file to stdout. I'm sure there are different ways of doing what I did.
Anyways, I want to run that JAR from my main java program. I am doing
Runtime.getRuntime().exec("java -jar C:/cat.jar C:/test.txt");
I've tried switching the forward slash to a backward slash and escaping it -- didn't work. Nothing is getting sent to standard out.
Where as, if I run the cat jar on its own, I get the file directed to standard out.
What am I doing wrong here? Is this enough information?
-
Andrew Thompson almost 11 years1) Read the runtime.exec info. page. Implement all the recommendations in the linked Java World article. 2) Then ignore it refers to
exec
& use aProcessBuilder(String[])
constructor. 3) Following the 1st 2 steps will probably give you enough information to solve the problem, otherwise it will provide more information for us to be able to help. -
Envin almost 11 yearsIt did, I read through all of the information if it was very helpful :)
-
-
Admin almost 11 years@Ravi Thapliyal super answer and thanks. i was searching for this type f answer.thanks again