У меня есть некоторый код на c #, который запускает процесс Java. На одной машине под управлением 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.
Спасибо,
Гул
UPDATE:
Я использую класс java Logger для вывода информации из моего приложения java. Я думаю, что эта проблема связана именно с Java, и как класс ConsoleHandler работает со стандартной ошибкой. Это сводит меня с ума!