java - 通过 CMD 的 Java 命令在 C#.NET 中不起作用
问题描述
我正在尝试cmd
使用 C# 运行 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;
When UseShellExecute
is ,如果要启动的应用程序只是可执行名称,则将使用true
系统和用户变量。PATH
因为您将它设置为false
,并且java
在应用程序的文件夹中不存在,所以 .NET 无法找到它。
你有两个选择:
- 设置
UseShellExecute
为true
以便它可以使用该PATH
变量来查找 java.util. - 使用完全限定的路径,例如
"C:\Program Files\Java\jdk1.8.0_101\bin\java"
有关更多信息,请参阅此答案。
推荐阅读
- sql - SQL换字命令
- variables - 将活动单元格的值复制到不同/非活动工作表 - 如何确定要使用的目标/目标工作表
- python - if condition does not executed in python after reading values from text file
- c# - IronPython 2.7.8 中的 VISBRAIN
- reactjs - 组件的重新渲染是否会创建其子组件的新实例?
- angularjs - 如何为 AngularJS(版本 1)的 angular-ui/ui-calendar 设置默认月份?默认情况下,它将其设置为当前月份
- android - 如何比较两个不同的 Firebase 数据库子数据项
- swift - 如何为 NSPoint 返回一个未定义的值
- r-markdown - 如何强制 RMarkdown 文档中的 Tikz 显示西里尔文字?
- python - manage.py runserver 打开 pycharm 而不是运行服务器