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

问题描述 投票:0回答:1

我正在尝试使用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();

'''

java c# cmd path command
1个回答
1
投票

此行是您的问题:

proc.StartInfo.UseShellExecute = false;

[UseShellExecutetrue时,如果要启动的应用程序只是可执行文件名,将使用系统和用户PATH变量。因为您将其设置为false,并且java在您的应用程序文件夹中不存在,所以.NET无法找到它。

您有两个选择:

  1. UseShellExecute设置为true,以便它可以使用PATH变量查找java。
  2. [使用完全限定的路径,例如"C:\Program Files\Java\jdk1.8.0_101\bin\java"

请参阅this answer了解更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.