Есть ли способ использовать Java для выполнения серии командной строки - PullRequest
1 голос
/ 27 июля 2010

Я ищу способ компиляции Visual Studio C ++ проекта в Java.Я знаю, что немного странно делать это таким образом.но я занимаюсь эволюционными алгоритмами.Так что Java создает код на С ++ и компилирует его на Java, а не на С ++.Мне просто нужно автоматизировать его, поэтому мне не нужно копировать код C ++, вставлять его в .NET и нажимать кнопку «Скомпилировать».

Поэтому я ищу способ выполнить серию командных строк и отобразить результат в консоли Eclipse.Можно ли это сделать?

Сначала мне нужно настроить среду Visual Studio, поэтому мне нужно сначала запустить этот пакет C: \ Program Files \ Microsoft Visual Studio 9.0 \ VC \ vcvarsall.bat, а затем изменить каталогc ++ проект и скомпилируйте проект с помощью "cl.exe", а затем "link.exe".Они должны быть выполнены в определенном порядке.

Ответы [ 2 ]

2 голосов
/ 27 июля 2010

Создайте командный файл и запустите его с помощью ProcessBuilder.

   import java.io.*;
   import java.util.*;

   public class DoProcessBuilder {
     public static void main(String args[]) throws IOException {

       if (args.length <= 0) {
         System.err.println("Need command to run");
         System.exit(-1);
       }

       Process process = new ProcessBuilder(args).start();
       InputStream is = process.getInputStream();
       InputStreamReader isr = new InputStreamReader(is);
       BufferedReader br = new BufferedReader(isr);
       String line;

       System.out.printf("Output of running %s is:", 
          Arrays.toString(args));

       while ((line = br.readLine()) != null) {
         System.out.println(line);
       }

     }
    } 
1 голос
/ 27 июля 2010

Один из простых способов выглядит следующим образом:

String[] cmd = new String[] { "yourcommand.exe", "argument1", "argument2", ... };
Process p = Runtime.exec(cmd);

Вы также можете найти другой вариант здесь , (например, указав среду и рабочий каталог тоже

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...