gpt4 book ai didi

C# 调用 java.exe 并从错误的 cmd 获取结果

转载 作者:行者123 更新时间:2023-11-30 22:30:08 24 4
gpt4 key购买 nike

我想使用 C# 进程从命令提示符中获取结果。命令是“java HelloWorld 1”(我已经使用 “javac HelloWorld.java” 将它构建到 HelloWorld.class 文件)

java代码:

public class HelloWorld {

public HelloWorld() {}

public static void main(String[] args) { System.out.println("STARTED");
try {
int param = Integer.parseInt(args[0].toString());
if (param == 1) {
System.out.println("BASE 64!");
} else if (param == 2) {
System.out.println("MD5!");
} else {
System.out.println("INPUT NOT MATCH!");
}
} catch (Exception ee) {
System.out.println("NO INPUT - ERROR");
}
} }

和 C# 代码:

    System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.FileName = "C:\\Program Files\\Java\\jdk1.6.0_25\\bin\\java.exe";
p.StartInfo.Arguments = "HelloWorld 1";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.Start();
string strOutput = p.StandardOutput.ReadToEnd();
p.WaitForExit();

但是 strOutput 是“”。你能给我解决方案吗?谢谢!

最佳答案

最有可能的是java找不到你的HelloWorld.class文件。

在这种情况下,它将写入标准错误,如

Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld
Caused by: java.lang.ClassNotFoundException: HelloWorld

然后是堆栈跟踪。

它不会向标准输出写入任何内容

我建议你做两件事:

1) 也从标准错误中读取,看看它说了什么

2) 在类文件之前添加类路径参数

 p.StartInfo.Arguments = " -cp C:\\code\\myapp HelloWorld 1";

(显然替换为包含 HelloWorld.class 的文件夹的正确路径)

关于C# 调用 java.exe 并从错误的 cmd 获取结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9835756/

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