所以,我得到了一些关于调试代码的建议,但是我的调试尝试已经引发了更多的错误。我有所有正确的用法,但这是我的问题:
Process p = new Process();
p.StartInfo.FileName = "javac";
Directory.CreateDirectory(System.IO.Path.Combine(Application.StartupPath + @"\TempJavaalfgwaepfgawe"));
p.StartInfo.Arguments = "-d " + System.IO.Path.Combine(Application.StartupPath + @"\TempJavaalfgwaepfgawe") + " " + files;
p.Start();
p.WaitForExit();
StreamReader sr = new StreamReader(p.StandardError);
MessageBox.Show(sr.ReadToEnd());
无论如何,错误源于我声明streamreader时的错误:
StreamReader sr = new StreamReader(p.StandardError);
我收到以下两个错误:
The best overloaded method match for 'System.IO.StreamReader.StreamReader(string)' has some invalid arguments
Argument 1: cannot convert from 'System.IO.StreamReader' to 'string'
答案 0 :(得分:4)
StandardError
的{{1}}属性已经是Process
。没有必要创建一个新的。
但是,您需要在进程启动之前重定向标准错误,以便从中读取。
StreamReader
答案 1 :(得分:3)
p.StandardError
属性已经是StreamReader
,因此您只需阅读它即可:
p.WaitForExit();
MessageBox.Show(p.StandardError.ReadToEnd());
另外,在开始进程之前不要忘记重定向标准错误,否则当您尝试阅读时会出现异常:
p.StartInfo.RedirectStandardError = true;
答案 2 :(得分:3)
p.StandardError
已经是StreamReader,请使用该实例。