Solved

standard output java

Posted on 2014-01-31
11
440 Views
Last Modified: 2014-03-07
Hi,

I am trying below example
http://www.avajava.com/tutorials/lessons/how-do-i-run-another-application-from-java.html?page=2
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class RuntimeExecTest2 {

	public static void main(String[] args) {
		try {
			Runtime runTime = Runtime.getRuntime();
			Process process = runTime.exec("java -classpath C:\\tutorials test.TestOutput");
			InputStream inputStream = process.getInputStream();
			InputStreamReader isr = new InputStreamReader(inputStream);
			InputStream errorStream = process.getErrorStream();
			InputStreamReader esr = new InputStreamReader(errorStream);

			int n1;
			char[] c1 = new char[1024];
			StringBuffer standardOutput = new StringBuffer();
			while ((n1 = isr.read(c1)) > 0) {
				standardOutput.append(c1, 0, n1);
			}
			System.out.println("Standard Output: " + standardOutput.toString());

			int n2;
			char[] c2 = new char[1024];
			StringBuffer standardError = new StringBuffer();
			while ((n2 = esr.read(c2)) > 0) {
				standardError.append(c2, 0, n2);
			}
			System.out.println("Standard Error: " + standardError.toString());
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

Open in new window


when i run this example i do not see any output at console. How to fix it.
please advise
Any links resources ideas highly appreciated. Thanks in advance
0
Comment
Question by:gudii9
  • 4
  • 4
  • 3
11 Comments
 
LVL 34

Expert Comment

by:Gary Patterson
ID: 39827094
Looks right.  What happens when you run it?
0
 
LVL 16

Expert Comment

by:krakatoa
ID: 39827433
Well, there will be some output - an error message if you haven't got

java -classpath C:\\tutorials test.TestOutput

in your classpath.
0
 
LVL 7

Author Comment

by:gudii9
ID: 39829851
java -classpath C:\\tutorials test.TestOutput

in your classpath.

Do i supposed to give that in double quotes as  i am giving. What is 'test' here.
Do i supposed to create that folder under C directory before executing this program. please advise
0
 
LVL 7

Author Comment

by:gudii9
ID: 39829878
i see my console surprisingly empty and also i do not wsee TestOutput file being created. I wonder if this example worked for you? Please advise
0
 
LVL 16

Assisted Solution

by:krakatoa
krakatoa earned 250 total points
ID: 39829907
>java -classpath c:/ee_q_code KeyReact

Just like that, no quotes, etc.

. . .  where "c:/ee_q_code" is where your .class file resides, and "KeyReact" is that class.
0
3 Use Cases for Connected Systems

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, testing some more, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us.

 
LVL 34

Accepted Solution

by:
Gary Patterson earned 250 total points
ID: 39830537
I created this and ran it and it worked for me on Win 7.  

"test" is the package name.  So, put your compiled classes in c:\tutorials\test

Then run:

java -cp c:\tutorials test.RuntimeExecTest2

- Gary Patterson
0
 
LVL 7

Author Comment

by:gudii9
ID: 39851770
I changed my program as below
package test;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class RuntimeExecTest2 {

	public static void main(String[] args) {
		try {
			Runtime runTime = Runtime.getRuntime();
			Process process = runTime.exec("java -classpath C:\\tutorials test.TestOutput");
			InputStream inputStream = process.getInputStream();
			InputStreamReader isr = new InputStreamReader(inputStream);
			InputStream errorStream = process.getErrorStream();
			InputStreamReader esr = new InputStreamReader(errorStream);

			int n1;
			char[] c1 = new char[1024];
			StringBuffer standardOutput = new StringBuffer();
			while ((n1 = isr.read(c1)) > 0) {
				standardOutput.append(c1, 0, n1);
			}
			System.out.println("Standard Output: " + standardOutput.toString());

			int n2;
			char[] c2 = new char[1024];
			StringBuffer standardError = new StringBuffer();
			while ((n2 = esr.read(c2)) > 0) {
				standardError.append(c2, 0, n2);
			}
			System.out.println("Standard Error: " + standardError.toString());
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

Open in new window


I still did not see output. How to fix it. please advise.
OutputEclipse.jpg
0
 
LVL 34

Expert Comment

by:Gary Patterson
ID: 39851806
Must be an Eclipse thing.  I use NetBeans for Java, and it works fine.

Why don't you just open a command prompt and run it from there manually?  That way Eclipse can't get in your way.
0
 
LVL 7

Author Comment

by:gudii9
ID: 39878532
I see output when i an at home laptop as below

Standard Output:
Standard Error: Error: Could not find or load main class test.TestOutput




It calls the exec method with "java -classpath C:\\projects\\workspace\\testing\\bin test.TestOutput". We need to set the classpathW so that 'java' can find the directory where our TestOutput class is located. Once again, this example requires 'java' to be on the system path.


The exec call executes the TestOutput class, and the standard output from TestOutput is read (which here is an input stream since we are reading it... the output from TestOutput is the input to RuntimeExecTest2). Additionally, the standard error from TestOutput is read by RuntimeExecTest2.
what above sentences means. How to set it from eclipse. What and where i should put in TestOutput, is it is a text file


how to fix it. please advise
0
 
LVL 34

Expert Comment

by:Gary Patterson
ID: 39880849
The error you are getting means that, based on the classpath and package information that you've provided, java cannot find the TestOutput.class file at runtime.

java -classpath C:\\projects\\workspace\\testing\\bin test.TestOutput

Means:

Look in the classpath (C:\\projects\\workspace\\testing\\bin) for a folder called "test" (the package name).

And execute TestOutput.class.

To make this work:

1) Your TestOutput.java source file must contain a "package test;" statement.  

2) Compile TestOutput.java, and you will get TestOutput.class.

3) Put TestOutput.class into a folder called "test", to reflect the package structure.

If your classpath is C:\projects\workspace\testing\bin\, then this folder needs to be:

C:\projects\workspace\testing\bin\test

So the full path to your class file will be:

C:\projects\workspace\testing\bin\test\TestOutput.class

Then you are ready to execute this:

java -classpath C:\\projects\\workspace\\testing\\bin test.TestOutput
0
 
LVL 16

Expert Comment

by:krakatoa
ID: 39913964
Thanks. ;
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
topping2 challenge 13 80
Eclipse Neon and jdk 1.8.0 11 126
PDFBox - convert image to PDF, PDF resolution 3 115
Java and GPO 11 66
Java had always been an easily readable and understandable language.  Some relatively recent changes in the language seem to be changing this pretty fast, and anyone that had not seen any Java code for the last 5 years will possibly have issues unde…
This was posted to the Netbeans forum a Feb, 2010 and I also sent it to Verisign. Who didn't help much in my struggles to get my application signed. ------------------------- Start The idea here is to target your cell phones with the correct…
Viewers learn about the third conditional statement “else if” and use it in an example program. Then additional information about conditional statements is provided, covering the topic thoroughly. Viewers learn about the third conditional statement …
Viewers will learn about basic arrays, how to declare them, and how to use them. Introduction and definition: Declare an array and cover the syntax of declaring them: Initialize every index in the created array: Example/Features of a basic arr…

914 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

14 Experts available now in Live!

Get 1:1 Help Now