2011-08-04 2 views
6

Tôi có một cái bình nếu tôi chạy từ dòng lệnh trả về cho tôi một bản in đúng hoặc sai in trên bảng điều khiểnBắt đầu ra bàn điều khiển từ lọ trong C#

tôi đang cố gắng chạy từ C# và nhận kết quả - đang được thực hiện như thế này

Process p = new Process(); 
p.StartInfo = new ProcessStartInfo("java", @"-jar test.jar " + paramterForStringArgs[0]); 
p.StartInfo.RedirectStandardOutput = true; 
p.StartInfo.UseShellExecute = false; 
p.Start(); 
String s = p.StandardOutput.ReadToEnd(); 
p.WaitForExit(); 
Trace.WriteLine("data = " + s); 
return false; 

Tôi dường như luôn nhận được chuỗi rỗng và tự hỏi tại sao điều này có thể xảy ra hoặc nếu có cách nào tốt hơn?

+1

Cố gắng thực hiện điều đó bằng lệnh "java.exe -version" và xem điều đó có hiệu quả không. – djangofan

+4

Bạn cũng có thể cần đặt RedirectStandardError và gọi p.StandardError.ReadToEnd(). – jonathanpeppers

+1

chuyển hướng đến luồng stderror cho phép tôi thấy lỗi mà bình không thể truy cập được. Tôi quên đặt bản sao vào thư mục đầu ra để sao chép nếu mới hơn - tôi lãng phí mỗi lần. xin lỗi - nhưng nó hoạt động - yay :) – James

Trả lời

5

Đặt RedirectStandardError và gọi p.StandardError.ReadToEnd() đọc bất kỳ đầu ra lỗi nào từ quá trình.