在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程序的正常输出。