classpath问题

fantasyfans1 2009-12-06 02:18:03
晕死,崩溃又来问题了。
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,但我就不懂为什么第二种方法不可以。求解!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
...全文
93 5 打赏 收藏 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
huntor 2009-12-06
  • 打赏
  • 举报
回复
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被运行了
bolink5 2009-12-06
  • 打赏
  • 举报
回复
没搞明白啊,友情帮您顶下
breezes2008 2009-12-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 frank3g 的回复:]
Java code
String a=this.file.getPath();
pro= runtime.exec("java -classpath a Java23");//这里你是把a当作是字符,而不是变量了;//这样写试试:pro= runtime.exec("java -classpath “+a+” Java23");
[/Quote]
顶。
frank3G 2009-12-06
  • 打赏
  • 举报
回复

String a=this.file.getPath();
pro = runtime.exec("java -classpath a Java23");
//这里你是把a当作是字符,而不是变量了;
//这样写试试:
pro = runtime.exec("java -classpath “+a+” Java23");
fantasyfans1 2009-12-06
  • 打赏
  • 举报
回复
我的意思是pro = runtime.exec("java -classpath D:\\Test Java23");和pro = runtime.exec("java -classpath a Java23");两句话不相等么。

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧