晕死,崩溃又来问题了。
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,但我就不懂为什么第二种方法不可以。求解!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
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,但我就不懂为什么第二种方法不可以。求解!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
String a=this.file.getPath();
pro = runtime.exec("java -classpath a Java23");
//这里你是把a当作是字符,而不是变量了;
//这样写试试:
pro = runtime.exec("java -classpath “+a+” Java23");
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被运行了