这个程序先执行Process process=run.exec(javac);
后面执行process=run.exec(java.toString());
有一点问题,就是调用waitFor有时候程序会阻塞,有时不会,
不知道是为什么.
import java.io.*;
import java.nio.*;
class classname
{
public static void main(String[] args) 
{
try {
Runtime run=Runtime.getRuntime();
String javac="javac "+args[0]+".java";
System.out.println(javac);
Process process=run.exec(javac);
//int exitValue=process.waitFor();
                       //一:这里不管javac是否出错都不阻塞        
InputStream errorIn=process.getErrorStream();
InputStreamReader streamReader=new InputStreamReader(errorIn);
BufferedReader bufferedReader=new BufferedReader(streamReader);
boolean error=false;
try {
String line="";
while((line=bufferedReader.readLine())!=null){
System.out.println(line);
error=true;
}
}
catch (IOException e) {
e.printStackTrace();
}

if(error==true)
{
System.out.println("Please Correct Your Code!");
System.exit(0);
}
int exitValue=process.waitFor();
                           //二:这里不管javac是否出错都不阻塞  StringBuffer java=new StringBuffer("java");
for(int i=0;i<args.length;i++)
java.append(' '+args[i]);
System.out.println(java);
process=run.exec(java.toString());
//exitValue=process.waitFor();
                     //问题在这里:三:如果java没有错误就不阻塞,有错误则阻塞,
                     //不明白是为什么
System.out.println("here");
errorIn=process.getErrorStream();
streamReader=new InputStreamReader(errorIn);
bufferedReader=new BufferedReader(streamReader);
error=false;
try {
String line="";
while((line=bufferedReader.readLine())!=null){
System.out.println(line);
error=true;
}
}
catch (IOException e) {
e.printStackTrace();
}
exitValue=process.waitFor();
                           //四:这里不管java是否出错都不阻塞 
/*if(error==true)
{
//System.out.println("Please Correct Your Code!");
//System.exit(0);
}*/

}
catch (Exception e) {
e.printStackTrace();
}
}
}