C#:如何直接对java.exe执行此命令行?

C#:如何直接对java.exe执行此命令行?,c#,java,process,arguments,cmd,C#,Java,Process,Arguments,Cmd,我正在编写一个需要运行java.jar服务器的程序。我需要直接运行这个过程,这样我就可以把输出重写成一个文本框,总之我可以完全控制它。我试着通过CMD.exe来实现它,但那不起作用,因为CMD.exe只会调用一个新进程java.exe,我无法控制它。我需要直接调用java.exe,这样我就可以控制并获得输出。你们谁能告诉我如何转换这个命令,这样我就可以在C#中创建一个进程并调用它 我需要转换此CMD命令: “java-Xmx1024m-cp./../libs/*;l2jserver.jar ne

我正在编写一个需要运行java.jar服务器的程序。我需要直接运行这个过程,这样我就可以把输出重写成一个文本框,总之我可以完全控制它。我试着通过CMD.exe来实现它,但那不起作用,因为CMD.exe只会调用一个新进程java.exe,我无法控制它。我需要直接调用java.exe,这样我就可以控制并获得输出。你们谁能告诉我如何转换这个命令,这样我就可以在C#中创建一个进程并调用它

我需要转换此CMD命令:

“java-Xmx1024m-cp./../libs/*;l2jserver.jar net.sf.l2j.gameserver.gameserver”

进入

我可以放入进程中的命令行。参数,以便我可以直接调用Java.exe。

我已经试过了。。。它就是不起作用


我已经看了好几个小时了。。。请有人帮忙

问题的一部分可能是,尽管框架文档中说使用流程并不总是正确地解决PATH环境变量的问题。如果知道Java所在文件夹的名称,请使用Java.exe的完整路径,否则请使用如下函数:

    private void LocateJava()
    {
        String path = Environment.GetEnvironmentVariable("path");
        String[] folders = path.Split(';');
        foreach (String folder in folders)
        {
            if (File.Exists(folder + "java.exe"))
            {
                this._javadir = folder;
                return;
            } 
            else if (File.Exists(folder + "\\java.exe")) 
            {
                this._javadir = folder + "\\";
                return;
            }
        }
    }
   //Prepare the Process
   ProcessStartInfo start = new ProcessStartInfo();
   if (!_javadir.Equals(String.Empty)) {
        start.FileName = this._javadir + "java.exe";
   } else {
        start.FileName = "java.exe";
   }
   start.Arguments = "-Xmx1024m -cp ./../libs/*;l2jserver.jar net.sf.l2j.gameserver.GameServer";
   start.UseShellExecute = false;
   start.RedirectStandardInput = true;
   start.RedirectStandardOutput = true;

   //Start the Process
   Process java = new Process();
   java.StartInfo = start;
   java.Start();

   //Read/Write to/from Standard Input and Output as required using:
   java.StandardInput;
   java.StandardOutput;
这有点骇人,但如果安装了java运行时并且它的文件夹位于windows PATH变量中,它会找到java.exe。在程序第一次需要查找Java时调用此函数,然后使用以下命令启动Java:

    private void LocateJava()
    {
        String path = Environment.GetEnvironmentVariable("path");
        String[] folders = path.Split(';');
        foreach (String folder in folders)
        {
            if (File.Exists(folder + "java.exe"))
            {
                this._javadir = folder;
                return;
            } 
            else if (File.Exists(folder + "\\java.exe")) 
            {
                this._javadir = folder + "\\";
                return;
            }
        }
    }
   //Prepare the Process
   ProcessStartInfo start = new ProcessStartInfo();
   if (!_javadir.Equals(String.Empty)) {
        start.FileName = this._javadir + "java.exe";
   } else {
        start.FileName = "java.exe";
   }
   start.Arguments = "-Xmx1024m -cp ./../libs/*;l2jserver.jar net.sf.l2j.gameserver.GameServer";
   start.UseShellExecute = false;
   start.RedirectStandardInput = true;
   start.RedirectStandardOutput = true;

   //Start the Process
   Process java = new Process();
   java.StartInfo = start;
   java.Start();

   //Read/Write to/from Standard Input and Output as required using:
   java.StandardInput;
   java.StandardOutput;

你能告诉我们到目前为止你有什么吗?