【发布时间】:2011-08-22 02:20:49
【问题描述】:
我有一些启动 java 进程的 c# 代码。在一台运行 Windows 7 的机器上,它运行良好。在另一个正在运行的 XP 上它没有。这是代码...
mServerProcess = new Process();
mServerProcess.StartInfo.FileName = "java";
mServerProcess.StartInfo.Arguments = "-jar my.jar";
mServerProcess.StartInfo.WorkingDirectory = "C:\\my_server";
mServerProcess.StartInfo.UseShellExecute = false;
mServerProcess.StartInfo.CreateNoWindow = true;
mServerProcess.StartInfo.RedirectStandardOutput = true;
mServerProcess.StartInfo.RedirectStandardError = true;
mServerProcess.StartInfo.RedirectStandardInput = true;
mServerProcess.OutputDataReceived += new DataReceivedEventHandler(ServerOutputHandler);
mServerProcess.ErrorDataReceived += new DataReceivedEventHandler(ServerErrorHandler);
mServerProcess.SynchronizingObject = this.console;
// Start the process.
mServerProcess.Start();
// Start the asynchronous read of the sort output stream.
mServerProcess.BeginOutputReadLine();
mServerProcess.BeginErrorReadLine();
在 XP 机器上,我从来没有收到来自进程标准错误的文本,而且整个进程似乎被破坏了。我无法从标准输入流中发送任何内容。
现在...有趣的是,如果我注释掉重定向标准输入的代码,我会得到标准错误。但当然,我也需要重定向标准输入。
以前有人见过吗?...重定向标准输入和标准错误会导致问题吗?
再一次...我的 Windows 7 机器上没有这个问题。
谢谢, 嗡嗡声
更新:
我正在使用 java Logger 类从我的 java 应用程序中输出信息。我认为这个问题与 Java 以及它的 ConsoleHandler 类如何处理标准错误有关。这让我发疯了!
【问题讨论】: