需要写一个带编译运行功能的记事本,
用Runtime.getRuntime().exec("cmd /k start javac Test.java")运行,可是打开的cmd窗口执行javac之后立刻消失,请问如何让新打开的cmd窗口在运行完命令后保留?另外,如何获取新cmd窗口中打印出来的报错信息?

解决方案 »

  1.   

    用流生成一个Bat文件,在Bat文件后面加个Pause指令,然后再在java中调用bat。bat如果不会,baidu 
      

  2.   

    如果是Java 6的话,使用 javax.tools.JavaCompilerjavax.tools.JavaCompiler 的 javadoc 里有例子;另外Java SE 6 新特性: 编译器 API
      

  3.   

    可以像 c 或者c++的做法一样,在程序最后加一句 Press any key to continue ……!(这其实就是做一个键盘接收语句,只要获取到任何key 都退出),你也可以用这种方式试一下,最后加上一个从键盘获取字符的方法就行了,如果键盘没有输入的话就一直等待,这样就不会在运行结束后就一闪而过了
      

  4.   

    这样子Runtime.getRuntime().exec("cmd /k start pause & javac Test.java")
      

  5.   


    试了一下帖子中的方法,运行时抛出空指针异常。
    ToolProvider.getSystemJavaCompiler()返回为null,我是用cmd编译运行的
    path = **\jdk1.6\bin;*******
    classpath = .;**\jdk1.6\lib;**********
    请问为什么会出现上述异常?
      

  6.   

    java 6 不需要设置 CLASSPATH 环境变量。
    我使用6u21。结果不是nullclojure -e "(javax.tools.ToolProvider/getSystemJavaCompiler)"#<JavacTool com.sun.tools.javac.api.JavacTool@3fee3fee>