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:也许这个问题及其答案有帮助: