我正在尝试使用C#在cmd中运行Java命令以获取程序的一些输入,Java的路径设置正确,并且能够在cmd中运行Java命令而没有任何麻烦,但是当我尝试过时在C#中,它显示“未将'java'识别为内部或外部命令,可操作程序或批处理文件。”,就像未设置路径一样。但是我可以在外部运行相同的命令,不知道是什么问题,请帮忙,谢谢!
'''
string cmd = @"/c java -jar """ + $"{treeEditDistanceDataFolder}libs" + $@"\RTED_v1.1.jar"" -f ""{f1}"" ""{f2}"" -c 1 1 1 -s heavy --switch -m";
Console.WriteLine(cmd);
var proc = new Process();
proc.StartInfo.FileName = "cmd.exe";
proc.StartInfo.Arguments = cmd;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.RedirectStandardError = true;
proc.Start();
Console.WriteLine("Process started");
string output = proc.StandardOutput.ReadToEnd();
Console.WriteLine("Output was read");
string error = proc.StandardError.ReadToEnd();
proc.WaitForExit();
'''
此行是您的问题:
proc.StartInfo.UseShellExecute = false;
[UseShellExecute
为true
时,如果要启动的应用程序只是可执行文件名,将使用系统和用户PATH
变量。因为您将其设置为false
,并且java
在您的应用程序文件夹中不存在,所以.NET无法找到它。
您有两个选择:
UseShellExecute
设置为true
,以便它可以使用PATH
变量查找java。"C:\Program Files\Java\jdk1.8.0_101\bin\java"
请参阅this answer了解更多信息。