2014-02-07 85 views
2

因此,在浏览网页后,我发现了一些文章(一些在stackoverflow上),它描述了如何通过在c#中启动一个新进程来执行命令行提示符。我注释到的第二个参数工作得很好,但我实际需要的参数(第一个)没有。它返回错误“无法找到或加载主类edu.stanford.nlp.parser.lexparser.LexicalizedParser”当我打开一个命令行(非编程),然后执行相同的命令(除了转义引号)它效果很好。任何想法都是关于什么问题?谢谢!命令行进程

var proc = new Process 
{ 
    StartInfo = new ProcessStartInfo 
    { 
     FileName = "CMD.exe", 
     Arguments = "/c java -mx100m -cp \"*\" edu.stanford.nlp.parser.lexparser.LexicalizedParser edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz libtest.txt", 
     // Arguments = "/c echo Foo", 
     UseShellExecute = false, 
     RedirectStandardOutput = true, 
     RedirectStandardError = true, 
     CreateNoWindow = true 
    } 
}; 
proc.Start(); 

Console.WriteLine(proc.StandardOutput.ReadToEnd()); 
Console.WriteLine(proc.StandardError.ReadToEnd()); 

回答

1

确保您开始处理的执行路径是正确的!

您可以使用SysInternals中的Process Monitor来确定该类在哪里查找。

+0

这就是问题!你知道一种方法来调整你的头顶的路径吗? “cd”命令不起作用,但如果有一种方法可以在c#中完成同样的事情,那将是完美的。如果没有,我可以弄清楚如何让cmd.exe文件在非本地目录中工作。无论哪种方式,谢谢! –

+0

@ user2742040我认为在cmd.exe中设置路径不起作用。但是我非常有信心,如果你使用正确的路径创建一个ProcessStartInfo对象并将它传递给Process.Start(这里),cmd将在当前工作目录中打开 – toATwork

+0

是的,它的确如此。我以为我将不得不实际移动程序,但只是改变工作路径! –