У нас есть приложение C #, которое запускает процесс. Процесс запускает bash для файла .bat, а файл .bat запускает файл jar.
Я выяснил, как сделать так, чтобы файл .bat записывал свои выходные данные в файл журнала, используя код ниже:
Process process = new Process();
process.StartInfo.FileName = batFile;
process.StartInfo.Arguments = jarArguments;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.ErrorDialog = false;
process.Start();
while (!process.StandardOutput.EndOfStream)
{
log.Debug(process.StandardOutput.ReadLine());
}
process.WaitForExit();
Моя проблема сейчас в том, что я не могу получить вывод из файла jar. Если я позволю процессу bash создать новое окно ( process.StartInfo.CreateNoWindow = false ), я смогу увидеть вывод из файла jar. Но если я не создаю новое окно, вывод из java jar не перенаправляется в мой лог-файл. Мои вопросы:
- Может ли java jar иметь расположение выходного текста во время выполнения?
- Можно ли перенаправить вывод из jav-файла в какое-либо местоположение файла на компьютере с Windows?