C# 系统的问题无法找到指定的文件

C# 系统的问题无法找到指定的文件,c#,C#,我对“系统找不到指定的文件”有问题 以下是我的代码中失败的部分: var processInfo = new ProcessStartInfo("java", javaParam + " -jar " + jar) { CreateNoWindow = true, UseShellExecute = false, RedirectStandardOutput = true, Redir

我对“系统找不到指定的文件”有问题

以下是我的代码中失败的部分:

var processInfo = new ProcessStartInfo("java", javaParam + " -jar " + jar)
        {
            CreateNoWindow = true,
            UseShellExecute = false,
            RedirectStandardOutput = true,
            RedirectStandardInput = true,
            RedirectStandardError = true,
            StandardErrorEncoding = Encoding.UTF8,
            StandardOutputEncoding = Encoding.UTF8,
            WorkingDirectory = _diretory
        };

        Process = new Process { StartInfo = processInfo };
        Process.Start();
在这幅图中。您可以看到“参数”和“工作目录”。我的“craftbukkit.jar”在我的工作目录中。但它找不到它。

下面是我在Visual Studio之外运行它时出现的错误

See the end of this message for details on invoking 
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.ComponentModel.Win32Exception (0x80004005): The system cannot find the file specified
   at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo)
   at System.Diagnostics.Process.Start()
   at The_Bukkit_GUI_Project.MinecraftProcess.StartProcess()
   at The_Bukkit_GUI_Project.Form1.Start()
   at The_Bukkit_GUI_Project.Form1.load_Click(Object sender, EventArgs e)
   at System.Windows.Forms.Control.OnClick(EventArgs e)
   at Telerik.WinControls.RadControl.OnClick(EventArgs e)
   at Telerik.WinControls.UI.RadButtonBase.buttonElement_Click(Object sender, EventArgs e)
   at Telerik.WinControls.RadItem.OnClick(EventArgs e)
   at Telerik.WinControls.UI.RadButtonItem.OnClick(EventArgs e)
   at Telerik.WinControls.UI.RadButtonElement.OnClick(EventArgs e)
   at Telerik.WinControls.RadItem.DoClick(EventArgs e)
   at Telerik.WinControls.RadItem.RaiseBubbleEvent(RadElement sender, RoutedEventArgs args)
   at Telerik.WinControls.RadElement.RaiseRoutedEvent(RadElement sender, RoutedEventArgs args)
   at Telerik.WinControls.RadItem.RaiseBubbleEvent(RadElement sender, RoutedEventArgs args)
   at Telerik.WinControls.RadElement.RaiseRoutedEvent(RadElement sender, RoutedEventArgs args)
   at Telerik.WinControls.RadElement.DoMouseUp(MouseEventArgs e)
   at Telerik.WinControls.ComponentInputBehavior.OnMouseUp(MouseEventArgs e)
   at Telerik.WinControls.RadControl.OnMouseUp(MouseEventArgs e)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
   at Telerik.WinControls.RadControl.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

但出于某种原因。这在我的本地计算机上工作。但这发生在我的远程服务器上。我也不知道为什么。。所以我在寻求一点帮助

首先确保服务器上已安装Java。然后,您应该检查以下内容:

如果启动一个进程,它会在工作目录和
PATH
环境变量中列出的目录中查找文件名。在开发人员机器上,为了方便起见,Java目录很可能已添加到
PATH
变量中

与只将
java
指定为可执行路径不同,更稳定的方法是提供要启动的可执行文件的完整路径


快速解决此问题的一种不太干净的方法是更改服务器上的
PATH
变量,以便还包含Java目录。尽管如此,我还是建议按其完整路径引用可执行文件,这样您就不必在要运行程序的每台计算机上更改
路径
变量。

您是否尝试过使用扩展名为的完整文件名?您确定远程服务器具有相同的目录布局吗?_diretory变量是如何填充的?@Me.Name该变量已正确填充。如果你看我的照片。“工作目录”是100%正确的。当程序在远程服务器上运行时,它是在管理员帐户下运行的?Java已安装。当我从bat文件运行“java-jar-craftbukkit.jar”时。它运行良好。我已经用PATH试过了。我得到了一些从路径中获取位置的代码。但是还是不走运。@StianTofte:你能试着在你的代码中引用Java和jar的完整路径吗,可能先是Java,然后是jar,以找出原因是哪一个?因为某种原因,它找不到Java。。当我把完整路径放到“java.exe”时。成功了。但是现在我想我必须找到一种新的方法来定位java。@StianTofte:也许这个问题及其答案有帮助: