我想通过C#编译Java程序。有谁知道为什么我不能接受程序的输出,而我却可以接受错误?如何从.java打印结果?
Process p = new Process(); p.StartInfo.FileName = "C:\\Program Files\\Java\\jdk1.7.0_04\\bin\\javac";
p.StartInfo.UseShellExecute = false;
p.StartInfo.Arguments = "c:\\java\\upgrade.java";
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.CreateNoWindow = true;
p.StartInfo.RedirectStandardOutput = true;
p.Start();
p.WaitForExit();
resultcode.Text = p.StandardOutput.ReadToEnd();
最佳答案
我认为您的意思是“如何从javac.exe捕获stdout和stderr文本?”
您已经有了大部分答案:
1)在您的Process对象中指定“重定向”:
Process p = new Process();
p.StartInfo.FileName = @"C:\Program Files\Java\jdk1.7.0_04\bin\javac";
...
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardError = true;
2)分配C#I / O对象以重定向到:
StreamReader outputReader = null;
StreamReader errorReader = null;
...
outputReader = p.StandardOutput;
errorReader = p.StandardError;
3)最后,从您的I / O对象中读取:
string myText = "StdOut:" + Environment.NewLine;
myText += outputReader.ReadToEnd();
myText += Environment.NewLine + "Stderr:" + Environment.NewLine;
myText += errorReader.ReadToEnd();
Console.WriteLine("Complete output:" + myText);
4)最后,如果您不想打开自己的I / O对象,则不要设置
p.StartInfo.RedirectStandardInput = true;
。