【问题标题】:Java command through CMD not working in C#.NET通过 CMD 的 Java 命令在 C#.NET 中不起作用
【发布时间】:2020-04-26 16:25:57
【问题描述】:

我正在尝试使用 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】:

    这一行是你的问题:

    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 了解更多信息。

    【讨论】:

      猜你喜欢
      • 2010-10-16
      • 1970-01-01
      • 2017-09-03
      • 2017-03-01
      • 2021-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多