我想通过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;

10-08 16:51