2012-03-25 118 views
2

我試圖從CMD行,使用C#打開Weka。這是我正在使用的代碼。它爲Weka.Start()行提供了一個錯誤,錯誤是:Win32異常未處理。系統找不到指定的文件。請幫助我。謝謝從命令行通過C#啓動Weka

ProcessStartInfo WekaStartInfo = new ProcessStartInfo(@"C:\Program Files\Weka- 3-6\java -Xmx1536m -jar weka.jar"); 


     WekaStartInfo.UseShellExecute = false; 
     WekaStartInfo.RedirectStandardOutput = true; 
     WekaStartInfo.RedirectStandardError = true; 
     WekaStartInfo.CreateNoWindow = false; 

     Process Weka = new Process(); 
     Weka.StartInfo = WekaStartInfo; 
     Weka.Start(); 
     string output = Weka.StandardOutput.ReadToEnd(); 
     Weka.WaitForExit(); 

回答

1

有兩個選項可以從 C#應用程序啓動WEKA。

  1. 在WEKA安裝目錄下有一個名爲RunWeka.bat一個 批處理文件。

    ProcessStartInfo wekaStartInfo = 
         new ProcessStartInfo(@"c:\Program Files\Weka-3-6\runweka.bat", "default"); 
    
    wekaStartInfo.WorkingDirectory = @"c:\Program Files\Weka-3-6"; 
    
    wekaStartInfo.UseShellExecute = false; 
    wekaStartInfo.RedirectStandardOutput = true; 
    wekaStartInfo.RedirectStandardError = true; 
    wekaStartInfo.CreateNoWindow = false; 
    
    using(Process weka = new Process()) 
    { 
        weka.StartInfo = wekaStartInfo; 
        weka.Start(); 
    } 
    
  2. 要啓動WEKA不使用批處理文件 使用下面的代碼:要使用此批處理文件,請使用以下 代碼啓動WEKA

    ProcessStartInfo wekaStartInfo = 
        new ProcessStartInfo(@"javaw", @"-classpath . RunWeka -i .\RunWeka.ini -w .\weka.jar -c default"); 
    
    wekaStartInfo.WorkingDirectory = @"c:\Program Files\Weka-3-6"; 
    wekaStartInfo.UseShellExecute = false; 
    wekaStartInfo.RedirectStandardOutput = true; 
    wekaStartInfo.RedirectStandardError = true; 
    wekaStartInfo.CreateNoWindow = false; 
    
    using(Process weka = new Process()) 
    { 
        weka.StartInfo = wekaStartInfo; 
        weka.Start();   
    } 
    

在這兩種情況下,你必須設置工作目錄。

0

根據錯誤描述,您可能已經爲您的過程指定了錯誤或不存在的位置。檢查ProcessStartInfo中指定的路徑是否正確。

也許,還有在申報此處不必要的空格:

ProcessStartInfo WekaStartInfo = new ProcessStartInfo(@"C:\Program Files\Weka-3-6\java -Xmx1536m -jar weka.jar"); 
0

在的ProcessStartInfo的構造函數您必須只輸入application名稱,或指定參數separate;

ProcessStartInfo WekaStartInfo = new ProcessStartInfo(
            @"C:\Program Files\Weka-3-6\java.exe", 
            @"-Xmx1536m -jar weka.jar");