在C#中调用Java方法时,可以使用ProcessStartInfo
类来启动Java应用程序,并通过Process
类的StandardOutput
和StandardError
属性来获取Java程序的输出和错误信息。以下是一个示例代码:
using System; using System.Diagnostics; class Program { static void Main() { try { // 设置Java程序的路径 string javaPath = "C:\\Program Files\\Java\\jdk1.8.0_291\\bin\\java.exe"; // 设置要运行的Java类名 string className = "com.example.MyJavaClass"; // 设置Java程序的命令行参数 string args = "-cp . MyJavaClass arg1 arg2"; // 创建ProcessStartInfo类 ProcessStartInfo startInfo = new ProcessStartInfo { FileName = javaPath, Arguments = args, RedirectStandardOutput = true, UseShellExecute = false, CreateNoWindow = true }; // 创建Process类 using (Process process = new Process { StartInfo = startInfo }) { // 启动Java程序 process.Start(); // 读取Java程序的输出 string output = process.StandardOutput.ReadToEnd(); Console.WriteLine("Java程序输出:"); Console.WriteLine(output); // 读取Java程序的错误信息 string error = process.StandardError.ReadToEnd(); Console.WriteLine("Java程序错误信息:"); Console.WriteLine(error); // 等待Java程序执行完成 process.WaitForExit(); } } catch (Exception ex) { Console.WriteLine("发生异常:"); Console.WriteLine(ex.Message); } } }
在上面的示例中,我们使用try-catch
语句来捕获可能发生的异常。如果Java程序执行过程中发生异常,Java虚拟机会将异常信息输出到标准错误流,我们可以通过process.StandardError.ReadToEnd()
方法读取这些错误信息。同时,我们也可以通过process.StandardOutput.ReadToEnd()
方法读取Java程序的正常输出。