2015-07-28 30 views
-3

這是我的程序,我在mac系統上運行它。爲什麼我在執行Java的外部程序時遇到這個異常

public static void main(String args[]) throws IOException { 
    Scanner scanner=new Scanner(new File("annotated_sentences.csv")); 
    int count=0; 
    scanner.nextLine(); 
    while (scanner.hasNextLine()) { 
     String line = scanner.nextLine(); 

     String split[]= line.split(","); 
     String text = split[4]; 
     text=text.replace("&", "#"); 
     Runtime run = Runtime.getRuntime(); 
     Process proc = run.exec(new String[]{"/bin/bash", "-c", 
      "curl --data text="+text+" https://gate.d5.mpi-inf.mpg.de/aida/service/disambiguate > /StanfordFile/"+count}); 

     count++; 
    } 
    scanner.close(); 
} 

我想處理像約30000行,但每次到335.異常出來。

Exception in thread "main" java.io.IOException: Cannot run program "/bin/bash": error=2, No such file or directory 
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1042) 
    at java.lang.Runtime.exec(Runtime.java:620) 
    at java.lang.Runtime.exec(Runtime.java:485) 
    at ProcessStanford.main(ProcessStanford.java:20) 
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:185) 
    at java.lang.ProcessImpl.start(ProcessImpl.java:134) 
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1023) 
    ... 3 more 

是什麼原因?

+0

這是不是一個標誌? 'IOException:不能運行程序「/ bin/bash」:error = 2,沒有這樣的文件或目錄'< - 似乎bash不在bin目錄中 – Danielson

+2

你在unix或windows下運行嗎? –

+0

我在Mac系統上運行它 – deathlee

回答

0

受到評論的啓發,我發現問題是因爲我打開了一次過多的過程,「bin/bash」無法同時處理它們。經過多次測試,我發現在2分鐘內運行100個進程是安全的(因爲平均來說,處理請求的雲服務的速度是1個請求/ 2分鐘)。所以我剛加了一行if(count%100==0)TimeUnit.MINUTES.sleep(2);,問題解決了。

相關問題