я нашел в сети некоторый код для запуска моего jar (который выводит на консоль true или false) из c # и прочитал его. На моей машине для разработки следующий код работает нормально
private bool hasInformation(String value)
{
try
{
using (Process p = new Process())
{
p.StartInfo = new ProcessStartInfo("java", @" -jar myJarName.jar " + value);
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;
p.Start();
String availableOrNot = p.StandardOutput.ReadToEnd();
p.WaitForExit();
//Trace.WriteLine("data = " + s);
availableOrNot = availableOrNot.Trim();
if (availableOrNot.Equals("true"))
{
return true;
}
return false;
}
}
catch (Exception e)
{
LogWriter.writeToLogFile(e);
}
return false;
}
Проблема в том, что на моей тестовой машине код возвращает просто пустую строку, как если бы он выдавал исключение, прежде чем он мог выполнить.
Я понятия не имею, что еще нужно проверить, так как файл jar работает нормально в окне командной строки, когда я делаю это вручную, и не выдается никаких исключений (ну, по крайней мере, его не перехватывают). Все, что происходит, это то, что я получаю пустую строку, где, как и на моей машине для разработки, я получаю истинный или ложный ответ.
Надеюсь, у кого-то могут быть какие-то идеи о том, что может пойти не так, чтобы я мог провести расследование, потому что действительно застрял.
Спасибо
Редактировать: после перенаправления сообщения об ошибке, чтобы я мог прочитать его из потока, я получаю сообщение об ошибке
Невозможно получить доступ к jarfile myJarName.jar \ r \ n "