public void Run() { var sb = new StringBuilder(); if (MaxPermSize != null) { sb.Append("-XX:MaxPermSize=" + MaxPermSize + " "); } sb.Append("-classpath "); sb.Append(String.Join(";", ClassPath.ToArray())); sb.Append(" "); sb.Append(MainClass); sb.Append(" "); sb.Append(Arguments); var args = sb.ToString(); Process = new Process { StartInfo = new ProcessStartInfo { FileName = @"C:\Program Files\Java\jdk1.7.0_25\bin\javaw.exe", Arguments = args, UseShellExecute = false } }; Process.StartInfo.RedirectStandardError = true; Process.StartInfo.RedirectStandardOutput = true; Process.Start(); Process.BeginOutputReadLine(); Process.BeginErrorReadLine(); Process.OutputDataReceived += (s, e) => Console.WriteLine(e.Data); Process.ErrorDataReceived += (s, e) => Console.WriteLine(e.Data); Process.WaitForExit(); }