2014-02-07 123 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

是的,它的確如此。我以爲我將不得不實際移動程序,但只是改變工作路徑! –