晕死,崩溃又来问题了。
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;public class CompileAndRun {    private String mess = null;
    private File file;
    private Runtime runtime;
    private Process pro;    public static void main(String[] args) {
        CompileAndRun com = new CompileAndRun();
com.setFile(new File("D:\\Test"));
//System.out.println(com.isCompile());
com.isRun();
    }    public CompileAndRun() {
        this.runtime = Runtime.getRuntime();
        
    }    public void setFile(File file) {
        this.file = file;
    }
public void isRun(){
try{
     //执行命令 
String a=this.file.getPath();
 pro = runtime.exec("java -classpath D:\\Test Java23");
 //取得命令结果的输出流 
 InputStream fis = pro.getInputStream(); 
   //用一个读输出流类去读 
     BufferedReader br = new BufferedReader(new InputStreamReader(fis)); 
     String line = null; 
     //逐行读取输出到控制台 
     while ((line = br.readLine()) != null) { 
         System.out.println(line); 
     } 
 } catch (IOException e) { 
     e.printStackTrace(); 
 }  }
}我这段代码可以运行并且也可以输出Java23.class运行后的结果。我把Java23.class放在D:\\Test这个路径。所以我用这条语句 pro = runtime.exec("java -classpath D:\\Test Java23");是可以成功运行的。
但我想对于一个不明确指定的路径,我用
String a=this.file.getPath();
 pro = runtime.exec("java -classpath a Java23");这两条语句就不可以运行Java23.class。我a的意思就是去获得地址,我单独System.out.print出a,也是等于D:\\Test,但我就不懂为什么第二种方法不可以。求解!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

解决方案 »

  1.   

    我的意思是pro = runtime.exec("java -classpath D:\\Test Java23");和pro = runtime.exec("java -classpath a Java23");两句话不相等么。
      

  2.   


    String a=this.file.getPath(); 
    pro = runtime.exec("java -classpath a Java23");
    //这里你是把a当作是字符,而不是变量了;
    //这样写试试: 
    pro = runtime.exec("java -classpath “+a+” Java23");
      

  3.   

    import java.io.BufferedReader;
    import java.io.File;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;public class CompileAndRun {    private String mess = null;
        private File file;
        private Runtime runtime;
        private Process pro;    public static void main(String[] args) {
            CompileAndRun com = new CompileAndRun();
    com.setFile(new File("/tmp"));
    //System.out.println(com.isCompile());
    com.isRun();
        }    public CompileAndRun() {
            this.runtime = Runtime.getRuntime();  
        }    public void setFile(File file) {
            this.file = file;
        }
    public void isRun(){
    try{
    //执行命令
    String a=this.file.getPath();
    pro = runtime.exec(new String[]{"java","-classpath",file.getPath(),"Test"});
    //取得命令结果的输出流
    InputStream fis = pro.getInputStream();
    //用一个读输出流类去读
    BufferedReader br = new BufferedReader(new InputStreamReader(fis));
    String line = null;
    //逐行读取输出到控制台
    while ((line = br.readLine()) != null) {
    System.out.println(line);
    }
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    } Test被运行了