我写了一段程序大概意思就是去运行一个。class文件,是调用cmd指令java去运行的。
pro = runtime.exec("cmd.exe /k start java -classpath "+a+" Java23");
结果是会弹出Dos的窗口,但是一下就闪没有了。虽然那上面显示了输出的结果。
谁知道怎么可以让那个Dos的窗口一直不关闭。我自己手动输入cmd指令去运行那窗口也不会关闭啊,这是为什么!!!
别告诉我把start去掉,我需要弹出窗口显示结果!谢谢!

解决方案 »

  1.   

    这个好说,你加个pause就行了
      

  2.   

    用java调用Bat文件,Bat就写什么java -classpath "+a+" Java23的
    最后一句加上pause,那个CMD就会停下来。 
      

  3.   

    我没有调研bat文件直接在后面写了个pause没有用啊。
      

  4.   

    那你就把你要执行的指令写入到bat文件,最后在追加pause,虽然有点麻烦,但感觉只能这样了 呵呵,等待高手。
      

  5.   

    pro = runtime.exec("c:/go.bat "+a+" Java23"); 
    go.bat的内容:
    java -classpath %1 %2
    pause那个%1代表运行BAT时输入的第一个参数,%2代表第二个
      

  6.   

    必须在BAT里加PAUSE,因为跟运行JAVA的"java"命令是两条命令
      

  7.   

    你的方法可以,但是是针对了特定的一个。class。。我现在就想对于任何只知道路径的。class都可以运行怎么办啊。总不可能要去人工去。bat中写n次java。。吧。
      

  8.   

    可不可以动态的建立一个。bat而不需要自己去新建一个我的意思是在java中写代码建立。bat。。
      

  9.   

    差了Runtime的API,发现虽然能以命令数组输入,但是不是你希望的意思,命令数组是用来分辨参数的。当然可以,有个笨办法就是把BAT的文件输出到一个bat文件里,然后再运行,接着再删掉BAT文件
      

  10.   

    File file = new File("c:/go.bat");
    file.createNewFile();
    FileUtils.writeStringToFile(file, "bat文件的内容");  //利用commons-io包里的FileUtils类输出文本到新建立的bat文件在这里执行bat文件
    file.delete();
      

  11.   

    启动一个控制台命令:
    Runtime runs = Runtime.getRuntime();
    runs.exec("cmd.exe /c start cmd");
      

  12.   

    启动一个控制台命令: 
    Runtime runs = Runtime.getRuntime(); 
    runs.exec("cmd.exe /c start cmd");
      

  13.   

    获取执行的返回值:
    String command = "cmd.exe /k start java -classpath "+a+" Java23";
    Process process = Runtime.getRuntime().exec(command);
    InputStreamReader ir = new InputStreamReader(process
    .getInputStream());
    LineNumberReader input = new LineNumberReader(ir);
    String line;
    while ((line = input.readLine()) != null){
    if(sb != null && sb.length() > 0){
    sb.append("\n");
    }
    if(sb.length() > 1024){
    sb = new StringBuffer();
    }
    sb.append(line);
    }
                            System.out.println(sb.toString());
    input.close();
    ir.close(); 
    process.destroy();
      

  14.   

    一个简单,但是不是很推荐的方法,使用命令行管道的方式(不过最后会报一个无关紧要的错)runtime.exec("cmd.exe /k pause | java ........");
      

  15.   

    我前面都说了嘛,就是用FileStream动态生成一个Bat文件,在Bat文件后面加个Pause指令,然后再在java中调用他。