我遇到“系统无法找到指定文件”的问题
以下是我的代码失败的部分:
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();
在此图片中。你可以看到“Arguments”和“WorkingDirectory”。我的“craftbukkit.jar”在我的工作目录中。但它无法找到它。 locals http://bumisworld.eu/locals.png
在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)
但出于某种原因。这适用于我的本地计算机。但这发生在我的远程服务器上。我不知道为什么......所以我正在寻求一些帮助......
答案 0 :(得分:0)
首先确保已在服务器上安装Java。然后你应该检查以下内容:
如果启动进程,它会在工作目录和PATH
环境变量中列出的目录中查找文件名。有可能在您的开发人员计算机上已将Java目录添加到PATH
变量中以方便使用。
不是仅将java
指定为可执行路径,更稳定的方法是提供要启动的可执行文件的完整路径。
A - 不太干净 - 快速解决这个问题的方法是更改服务器上的PATH
变量,以便还包含Java目录。不过,我建议以完整路径引用可执行文件,这样就不必更改要运行程序的每台计算机上的PATH
变量。