gpt4 book ai didi

java - 获取 Java 应用程序 C# 的输出

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:38:42 26 4
gpt4 key购买 nike

这可能很难理解,但我想在控制台 C# 应用程序中获取 java 应用程序的输出。

当您在 C# 控制台应用程序中使用 Process.Start 启动 java 应用程序时,java 应用程序将获得控制权,并且所有行都使用 System.Out.Println() 编写。

我想启动一个 java 应用程序,使 System.out.println() 存储在一个变量中而不打印,然后使用 Console.WriteLine() 重新打印变量是什么

请允许我重新表述。 #1 在 c# 控制台应用程序中使用 process.start 启动 java 应用程序。 #2 取消 java 尝试输出它要用 System.out.prinln() 输出的内容,而是将其存储在变量/字符串中。 #3 使用 Console.WriteLine() 重新打印该字符串。

重定向标准输出对此不起作用。

如果您想知道,这是用于 minecraft bukkit 的。

最佳答案

Java 应用程序:

public class JavaApplication {

public static void main(String[] args) {
System.out.println("Java application outputs something into stdout");
System.err.println("Java application outputs something into stderr");
}
}

C# 应用程序

using System;
using System.Diagnostics;

namespace CaptureProcessStdOutErr
{
public class Program
{
public static void Main(string[] args)
{
var startInfo = new ProcessStartInfo("java", "JavaApplication") // proper path to java, main java class, classpath, jvm parameters, etc must be specified or use java -jar jarName.jar if packaged into a single jar
{
RedirectStandardError = true,
RedirectStandardOutput = true,
UseShellExecute = false
};

var process = Process.Start(startInfo);

process.WaitForExit();

Console.WriteLine("Captured stderr from java process:");
Console.WriteLine(process.StandardError.ReadToEnd());
Console.WriteLine();
Console.WriteLine("Captured stdout from java process");
Console.WriteLine(process.StandardOutput.ReadToEnd());
}
}
}

这假定 java.exe 在 PATH 中。

编译 JavaApplication 并将 JavaApplication.class 文件放在 C# 应用程序 (CaptureProcessStdOutErr.exe) 旁边

运行 CaptureProcessStdOutErr.exe

输出:

Captured stderr from java process:
Java application outputs something into stderr

Captured stdout from java process
Java application outputs something into stdout

关于java - 获取 Java 应用程序 C# 的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37150024/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com