Запуск Weka из командной строки через C # - PullRequest
2 голосов
/ 25 марта 2012

Я пытаюсь открыть Weka из строки cmd, используя C #. Это код, который я использую. Это дает мне ошибку для строки Weka.Start (), и ошибка такова: исключение Win32 не обработано. Система не может найти указанный файл. Пожалуйста, помогите мне. Спасибо

 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();

Ответы [ 3 ]

1 голос
/ 25 марта 2012

Существует два варианта запуска WEKA из приложения C #.

  1. В каталоге установки WEKA есть командный файл с именем RunWeka.bat.Чтобы запустить WEKA с помощью этого пакетного файла, используйте следующий код:

    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 без использования пакетного файла, используйте следующий код:

    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 голосов
/ 25 марта 2012

В конструкторе ProcessStartInfo необходимо либо ввести только имя приложения , либо указать аргументы отдельного ;

ProcessStartInfo WekaStartInfo = new ProcessStartInfo(
                                  @"C:\Program Files\Weka-3-6\java.exe",
                                  @"-Xmx1536m -jar weka.jar");
0 голосов
/ 25 марта 2012

Возможно, вы указали неверное или несуществующее местоположение для вашего процесса на основе описания ошибки. Проверьте правильность пути, указанного в ProcessStartInfo.

Возможно, здесь есть лишние пробелы в объявлении:

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