2012-10-15 112 views
7

我试图使用调用Runtime.getRuntime另一个java程序运行Java程序(时)EXEC产生java.io.IOException:错误= 2,没有这样的文件或目录

代码:

String java_home = System.getenv("JAVA_HOME"); 
String[] command = {""+java_home+"/bin/java -cp -cp /sc/sug/p-lib/* Tdesigner -cd /pr -in ing.rsp -out /scratch/sug/ng.pla -ad -stopO "}; 
       try { 
        proc = Runtime.getRuntime().exec(command); 
        proc.waitFor(); 
        int exitCode = proc.exitValue(); 
       } catch (IOException e) { 
         e.printStackTrace(); 
       } catch (InterruptedException e) { 
         e.printStackTrace(); 
       } 

它给我以下错误:

java.io.IOException: Cannot run program "/net/sl/sc/jdk6/bin/java -cp /sc/sug/p-lib/* Tdesigner -cd /pr -in ing.rsp -out /scratch/sug/ng.pla -ad -stopOnError ": java.io.IOException: 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) 

任何人都可以帮助我解决这个问题。是否需要使用-cp添加单个jar文件而不是设置目录。

回答

2

如果您使用exec(String []),则必须在单独的数组元素中提供命令及其参数,而不是像您所做的那样在一个中提供。

+0

String [] command = {“”+ java_home +“/ bin/java -cp/sc/sug/p-lib/* Tdesigner”,“-cd”,“/ pr”,“-in” .rsp“,”-out“,”/scratch/sug/ng.pla“,” - ad“,”-stopO“}; ( – user1731553

+1

)您仍然拥有java -cp /sc/.../* Tdesigner作为所有的字符串,它需要被分开。否则,不要调用java并传递它的参数 - CP等,你正在试图运行一个程序*称为* java -cp/sc/... –

3

尝试移除从命令字符串数组额外-cp和在阵列中使用单独的标记:

String[] command = { java_home + "/bin/java", "-cp", 
    "/sc/sug/p-lib/*", "Tdesigner", "-cd", "/pr", "-in", "ing.rsp", 
    "-out", "/scratch/sug/ng.pla", "-ad", "-stopO" }; 
0

我使用阶。这里是我的代码:

Runtime.getRuntime.exec(Array("/bin/bash", "-c", #your_command)).waitFor() 

我认为这对使用java的人很容易理解。

相关问题