怎么写程序编译和运行另外的一个程序?

f_acme 2005-10-24 10:58:21
我想写一个程序来编译和运行另外一个程序,比如说Judge.java和一个Hello.java在同一个目录下,现在我想运行Judge.java来编译和运行Add.java程序,下面是我的代码:

public class Judge
{
public static void main(String args[])
{
try
{
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec("javac Hello.java");
proc=rt.exec("java Hello");
InputStream stderr = proc.getErrorStream();
InputStreamReader isr = new InputStreamReader(stderr);
BufferedReader br = new BufferedReader(isr);
String line = null;
System.out.println("<ERROR>");
while ( (line = br.readLine()) != null)
System.out.println(line);
System.out.println("</ERROR>");
int exitVal = proc.waitFor();
System.out.println("Process exitValue: " + exitVal);
} catch (Throwable t)
{
t.printStackTrace();
}
}
}

然而运行结果却是:
<ERROR>
java.lang.NoClassDefFoundError: Hello
Exception in thread "main"
</ERROR>
Process exitValue: 1
为什么找不到Hello呢?另外如果能够找到类的话,不知这样写能否正确运行Hello这个程序呢?如果不能,那位高手能否写个程序来完成这个功能?
感激不尽!
...全文
124 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
紫炎圣骑 2005-10-25
  • 打赏
  • 举报
回复
proc = rt.exec("cmd /c start java _previous.HelloWorld");

这句话恐怕不行,因为如果不在D:\\Work\\Java\\Test\\src 目录下执行java _previous.HelloWorld 会报错的
believefym 2005-10-25
  • 打赏
  • 举报
回复
//把你的helloworld设置能暂停的,不然运行之后dos直接退出了
//到控制台下运行,我这边用eclipse运行好像不行
import java.io.*;

public class Judge {
public static void main(String args[]) {
String srcDir = "D:\\Work\\Java\\Test\\src\\_previous";
try {
Runtime rt = Runtime.getRuntime();
Process proc;
proc = rt.exec("cmd /c javac "+srcDir+"\\HelloWorld.java");
Thread.sleep(2000);//编译没那么快的,等待生成class文件
proc = rt.exec("cmd /c start java _previous.HelloWorld");
InputStream stderr = proc.getErrorStream();
InputStreamReader isr = new InputStreamReader(stderr);
BufferedReader br = new BufferedReader(isr);
String line = null;
System.out.println("<ERROR>");
while ((line = br.readLine()) != null)
System.out.println(line);
System.out.println("</ERROR>");
int exitVal = proc.waitFor();
System.out.println("Process exitValue: " + exitVal);
} catch (Throwable t) {
t.printStackTrace();
}
}
}
f_acme 2005-10-25
  • 打赏
  • 举报
回复
up
f_acme 2005-10-24
  • 打赏
  • 举报
回复
如果只要编译的那条语句在我这里Judge.java程序可以运行,但是加上proc=rt.exec("java Hello");这条语句之后就找不到Hello了.不知"masse(当午)"所说的运行两次是指哪个程序?我用的是Jcreator,先编译Judge.java,然后再运行就是这样子的.

另外2楼说的"但是Hello不知道有没有执行,很奇怪 反正看不到Hello的执行结果"又怎么解决呢?
masse 2005-10-24
  • 打赏
  • 举报
回复
是可以执行的,

但是你要运行两次

第一次运行找不到Hello是因为需要编译

第二次再运行java Judge就可以了
masse 2005-10-24
  • 打赏
  • 举报
回复
编译能通过

我这里运行的结果:

<ERROR>
</ERROR>
Process exitValue: 0

但是Hello不知道有没有执行,很奇怪
反正看不到Hello的执行结果

62,612

社区成员

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

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