2010-07-27 71 views
1

我正在尋找一種方法來編譯java中的visual studio c + +項目。我知道這樣做有點奇怪。但我正在做一個演化算法。所以Java正在創建C++代碼並且用Java而不是C++編譯它。我只需要自動化它,所以我不必複製C++代碼並將其粘貼到.NET中,然後單擊編譯它。有沒有辦法使用java來執行一系列的命令行

所以我正在尋找一種方法來執行一系列命令行並在eclipse控制檯中顯示結果。我可以這樣做嗎?

首先我需要設置Visual Studio環境,所以我需要首先運行此批處理C:\ Program Files \ Microsoft Visual Studio 9.0 \ VC \ vcvarsall.bat,然後將目錄更改爲C++項目並編譯項目使用「cl.exe」然後「link.exe」。他們需要按照特定的順序執行。

+0

我很好奇,爲什麼您需要在Visual Studio中爲此執行任何操作,您可以使用Java調用可執行文件,並且可以從命令行執行Microsoft Visual C++編譯器,並將參數和文件傳遞給參數進行編譯。 – 2010-07-27 00:08:11

回答

2

創建一個批處理文件並使用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

其中一個簡單的方法如下:

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

您還可以找到其他的變化here(例如通過指定環境和工作目錄太

相關問題