如何在Windows操作系统中使用Runtime.exex()从单个类在单独的命令窗口中调用多个java程序?

时间:2013-11-03 06:55:18

标签: java windows batch-file

我正在使用类似这样的Runtime.exex()来在2个独立的命令窗口中调用2个不同的java程序(在Windows 7环境中)。

   public class Invoke{
         public void main(...){
            String[] class1 = {"start", "java", "A"}; //Assume A.java is already compiled
            String[] class2 = {"start", "java", "B"}; //Assume B.java is already compiled
            try{
            Runtime.getRuntime().exec(class1);
            Runtime.getRuntime().exec(class2);
            }catch(Exception e){
               e.printStackTrace();
             }
         }
   }

但它给我的例外

       java.io.IOException: Cannot run program "start": CreateProcess error=2, The syst
       em cannot find the file specified
    at java.lang.ProcessBuilder.start(Unknown Source)
    at java.lang.Runtime.exec(Unknown Source)
    at java.lang.Runtime.exec(Unknown Source)
    at initialConfig.StartApp.win_startProg(StartApp.java:95)
    at initialConfig.StartApp.main(StartApp.java:134)
     Caused by: java.io.IOException: CreateProcess error=2, The system cannot find th
     e file specified
    at java.lang.ProcessImpl.create(Native Method)
    at java.lang.ProcessImpl.<init>(Unknown Source)
    at java.lang.ProcessImpl.start(Unknown Source)

我是否需要创建一个单独的.bat文件来调用这两个程序,然后在Runtime.exec()中使用这些bats?请帮忙。感谢。

1 个答案:

答案 0 :(得分:1)

我认为startcmd.exe的内部命令。所以试试:

String[] class1 = {"cmd.exe", "/c", "start", "java", "A"};

这导致在单独的进程和窗口中调用java - 并且不会等待它终止。