使用 Process.StartInfo 编译 Java 程序时出现错误 "The system cannot find the file specified"

Getting error "The system cannot find the file specified" on compiling Java program using Process.StartInfo

获取错误:

"The system cannot find the file specified"

尝试使用 Process.Start() 编译 Java 程序时。它在我的电脑上运行良好,但在部署到服务器上时出现错误。请帮帮我。 谢谢。

下面是我的代码:

public void CompileJava(string path, string Qid)
{   
  Process jcprocess = new Process();
  jcprocess.StartInfo.WorkingDirectory = path;
  jcprocess.StartInfo.FileName = "javac";
  jcprocess.StartInfo.Arguments = path+"Main.java";
  lbl_Test.Text = jcprocess.StartInfo.Arguments.ToString();
  jcprocess.StartInfo.UseShellExecute = false;
  jcprocess.StartInfo.RedirectStandardInput = true;
  jcprocess.StartInfo.RedirectStandardOutput = true;
  jcprocess.StartInfo.RedirectStandardError = true;
  jcprocess.StartInfo.CreateNoWindow = true;
  jcprocess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
  jcprocess.Start();
}

几乎可以肯定是 javac 不在您在那台机器上的路径中。 要么将整个路径添加到 javac(不建议),要么将 javac 的路径添加到您的环境中。为什么我说 "not suggested" 是因为 javac 可能需要在同一路径中找到其他东西。

如果这不起作用.. 您可以尝试这种方式,当任何应用程序发生 'file not found' 或类似情况时永远不会失败。不只是您的应用程序。

  1. 获取免费的 sysinternals 进程监视器。
  2. 打开添加滤镜(菜单[滤镜]->[滤镜])
  3. 添加"Process Name""is"(或contians)"YourWinformApp.exe"[OK]
  4. 清空列表,做一些坏事。
  5. 右键单击结果列中的 "SUCCESS",然后 "Exclude 'SUCCESS'"
  6. 你的答案应该就在你的脸上。

祝你好运!