2012-05-02 102 views
0

我需要運行在Java控制檯應用程序命令Runnnig一個Java控制檯應用程序:從另一個Java應用程序cosole

/usr/bin/java -Xms512m -Xmx3072m -jar /Users/ivan/Desktop/market/market.jar 500 500 1 1 0.1 true true /Users/ivan/Desktop/market/files/simulationResult/ 

我試過,但沒有奏效:

Process child = Runtime.getRuntime().exec(new String[]{command}); // command is the string written above 

我嘗試了很多其他的東西,但我沒有得到它。任何幫助?

順便說一句,我使用Mac(如果它很重要)。

編輯:有了上面的代碼,我得到以下錯誤:

Exception in thread "main" java.io.IOException: Cannot run program "java -Xms512m -Xmx3072m -jar /Users/ivan/Desktop/market/market.jar 500 500 1 1 0.1 true true /Users/ivan/Desktop/market/files/simulationResult/": error=2, No such file or directory 
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:460) 
    at java.lang.Runtime.exec(Runtime.java:593) 
    at java.lang.Runtime.exec(Runtime.java:466) 
    at SimulationStarter.main(SimulationStarter.java:59) 
Caused by: java.io.IOException: error=2, No such file or directory 
    at java.lang.UNIXProcess.forkAndExec(Native Method) 
    at java.lang.UNIXProcess.<init>(UNIXProcess.java:53) 
    at java.lang.ProcessImpl.start(ProcessImpl.java:91) 
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:453) 
... 3 more 

編輯#2:我現在就發,而不是字符串 「命令」 這樣的:

  String[] commands = new String[]{ 
        "/bin/bash", "-c", 
        "\"/usr/bin/java -Xms512m -Xmx3072m -jar " + simulatorPath + " " 
        + var1 + " " 
        + var2 + " " 
        + var3 + " " 
        + var4 + " " 
        + var5 + " " 
        + var6 + " " 
        + var7 + " " 
        + var8 + " " 
        + "\""   
      }; 

但我仍然得到/bin/bash: /usr/bin/java -Xms512m -Xmx3072m -jar /Users/ivan/Desktop/market/market.jar 500 500 2 1 0.1 true true /Users/ivan/Desktop/market : No such file or directory

child.waitFor()返回數127

+1

你有什麼錯誤? – m0skit0

+1

捕獲該進程的輸出/錯誤流並檢查錯誤。然後回來的細節。 – Thomas

+0

如何在Mac上啓動控制檯?您需要使用Process啓動控制檯,然後將java行作爲參數傳遞。 –

回答

2

如果命令是上述字符串然後

new String[]{command} 

會給你一個項目的字符串數組。你應該嘗試類似於

command.split(' ') 

其中command是包含上述命令的String變量。

+0

實際上,您只需將命令作爲單個字符串傳遞即可 - 這將在內部拆分爲令牌,這將在此處做正確的事情。 –

+0

您應該使用字符串數組而不是單個命令。 –

+0

@MoritzPetersen有什麼區別?該陣列應該如何? – Ivan