我想写一个程序来编译和运行另外一个程序,比如说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这个程序呢?如果不能,那位高手能否写个程序来完成这个功能?
感激不尽!
{
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这个程序呢?如果不能,那位高手能否写个程序来完成这个功能?
感激不尽!
</ERROR>
Process exitValue: 0但是Hello不知道有没有执行,很奇怪
反正看不到Hello的执行结果
//到控制台下运行,我这边用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();
}
}
}