Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过CMD执行的Java命令在C#.NET中不起作用_Java_C#_Cmd_Path_Command - Fatal编程技术网

通过CMD执行的Java命令在C#.NET中不起作用

通过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""

我正在尝试使用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
时,如果要启动的应用程序只是可执行文件名,则将使用系统和用户
路径
变量。因为您将其设置为
false
,并且
java
不存在于应用程序文件夹中,所以.NET无法找到它

您有两个选择:

  • UseShellExecute
    设置为
    true
    ,以便它可以使用
    PATH
    变量来查找java
  • 使用完全限定路径,例如
    “C:\Program Files\Java\jdk1.8.0\u 101\bin\Java”
  • 有关更多信息,请参阅