我需要编译一个外部 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"
有人可以解释这段代码的问题吗?谢谢!
最佳答案
您要首先 指定类名,然后是类路径的参数。类名总是最后出现在特定于程序的参数之前。因此,在您的情况下,类路径部分不将被视为一个选项 - 它将被视为 Java 程序本身的两个参数(-cp
和路径) .
所以代替:
java a -cp (whatever)
你想要
java -cp (whatever) a
关于Java - NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14426864/