3

我需要编译一个外部 java 文件(比如 a.java)。这是我为此编写的代码。

(字符串路径包含java和class文件的路径)

    command[0] = "javac";
    command[1] = path+"a.java";
    p = Runtime.getRuntime().exec(command);        

上面的代码似乎工作得很好。但是下面的代码

    command[0] = "java";
    command[1] = "a";
    command[2] = "-cp";
    command[3] = "."+path+"a";
    p = Runtime.getRuntime().exec(command);        
    stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
    stdError = new BufferedReader(new InputStreamReader(p.getErrorStream()));
    while ((temp = stdInput.readLine()) != null) result += "\n" + temp;
    while ((temp = stdError.readLine()) != null) result += "\n" + temp;

导致以下错误

java.lang.NoClassDefFoundError: a
Exception in thread "main" 

有人可以解释这段代码的问题吗?谢谢 !

4

1 回答 1

4

首先指定类名,然后是类路径的参数。类名始终是程序特定参数之前的最后一件事。在您的情况下,类路径部分因此不会被视为一个选项 - 它将被视为-cpJava 程序本身的两个参数(和路径)。

所以而不是:

java a -cp (whatever)

你要

java -cp (whatever) a
于 2013-01-20T17:00:57.003 回答