通过CMD执行的Java命令在C#.NET中不起作用
我正在尝试使用C在通过CMD执行的Java命令在C#.NET中不起作用,java,c#,cmd,path,command,Java,C#,Cmd,Path,Command,我正在尝试使用C在cmd中运行java命令以获取程序的一些输入,java的路径设置正确,我能够在cmd中运行java命令,没有任何问题,但当我在C中尝试时,它显示“java”不被识别为内部或外部命令、可操作程序或批处理文件。“就像没有设置路径一样 但是我可以在外面运行相同的命令,不知道是什么问题,请帮助,提前感谢 string cmd = @"/c java -jar """ + $"{treeEditDistanceDataFolder}libs" + $@"\RTED_v1.1.jar""
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
时,如果要启动的应用程序只是可执行文件名,则将使用系统和用户路径
变量。因为您将其设置为false
,并且java
不存在于应用程序文件夹中,所以.NET无法找到它
您有两个选择:
UseShellExecute
设置为true
,以便它可以使用PATH
变量来查找java“C:\Program Files\Java\jdk1.8.0\u 101\bin\Java”