2015-07-28 29 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);,问题解决了。

相关问题