如何用exec在新开的进程中处理多个cmd命令?Runtime.getRuntime().exec("javac Test.java \n java Test");
运行显示
错误:仅当显式请求注释处理时才接受类名称“java,Test”Runtime.getRuntime().exec(new String[]{"javac Test.java","java Test"});
运行则抛出异常
Exception in thread "main" java.io.IOException: Cannot run program "javac Test.j
ava": CreateProcess error=2, ?????????
        at java.lang.ProcessBuilder.start(Unknown Source)
        at java.lang.Runtime.exec(Unknown Source)
        at java.lang.Runtime.exec(Unknown Source)
        at Test.main(Test.java:8)
Caused by: java.io.IOException: CreateProcess error=2, ?????????
        at java.lang.ProcessImpl.create(Native Method)
        at java.lang.ProcessImpl.<init>(Unknown Source)
        at java.lang.ProcessImpl.start(Unknown Source)
        ... 4 more

解决方案 »

  1.   

    看看下面的代码
    Test.java
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    public class Test {
    public static void main(String[] args) throws IOException, InterruptedException {
    Process p = Runtime.getRuntime().exec("cmd /c javac TestB.java & java TestB");
    InputStream is = p.getInputStream();
    BufferedReader br = new BufferedReader(new InputStreamReader(is));
    String line = null;
    while((line=br.readLine()) !=null) {
    System.out.println(line);
    }
    br.close();
    }
    }TestB.javapublic class TestB {

    public static void main(String[] args) {
    System.out.println("in TestB");

    }}执行
    output:
    in TestBGood Luck!
      

  2.   

    Runtime.getRuntime().exec("javac Test.java \n java Test");把这个作为参数的java文件的路径写全!系统哪里会知道Test。java在哪!!!
    以上改完如果不好用,你就把编译和执行分成两步来写!
      

  3.   

    你在doc下编译时,不都得在当前java文件所在的目录下使用javac 和java 命令吗?比如你有一个AA。java在D:\test\目录下
    cmd后
    如果你直接在c:\document and...\下直接javac AA.java肯定会有问题的!