2

我必须从 C# .Net concole 应用程序中调用 java 方法。

以下链接中的解决方案

Process myProcess = new Process();
Process.StartInfo.UseShellExecute = false;
myProcess.StartInfo.FileName = "java";
myProcess.StartInfo.Arguments = "-jar D:\\myjava.jar";
myProcess.Start();e

不允许从 jar 文件到 .Net 控制台应用程序的有用返回值(例如字符串对象)。

另一种方法可能是使用IKVM,但开发已经结束,用于稳定的企业解决方案似乎已经过时了。

如何调用 java 方法和 geta 字符串作为结果值?

4

1 回答 1

3

IKVM 是相当重量级的(更不用说停产了),所以如果你能避免它,那么它可能会更容易。

如果 Java 程序可以在 STDOUT 上产生其输出(即写入控制台),那么您可以通过您的Process对象读取该输出。

例如:

Process myProcess = new Process();
Process.StartInfo.UseShellExecute = false;
myProcess.StartInfo.FileName = "java";
myProcess.StartInfo.Arguments = "-jar D:\\myjava.jar";
myProcess.StartInfo.RedirectStandardOutput = true;
myProcess.Start();
var output = process.StandardOutput.ReadToEnd();

您可能需要尝试在ProcessStartInfo.

于 2019-03-16T14:49:03.247 回答