2013-01-20 46 views
3

我需要编译外部Java文件(比如a.java)。这是我写的代码。爪哇 - NoClassDefFoundError的

(字符串路径中包含的路径,Java和类文件)

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" 

可能有人explaine问题与此代码。谢谢 !

回答

4

你指定的类名第一,然后在类路径的参数。类名称总是最后事情来具体程序参数之前。在你的情况,classpath中的一部分将因此被视为一种选择 - 它会被视为两个参数(-cp和路径)和Java程序本身。

所以不是:

java a -cp (whatever) 

你想

java -cp (whatever) a 
+0

我试过 - '命令[0] = “java的”;'' 命令[1] = “-cp” ;' 'command [2] =“。”+ path +“\\ temp \\”;' 'command [3] =“a”;' 但是我仍然收到同样的错误。这个命令是正确的吗? –

+0

@randomuser:首先尝试从命令行运行它 - 以这种方式进行实验会更容易。 * temp目录中的类文件* –

+0

我得到了同样的错误,当我运行它使用CMD, 我发现有人具有相同的[问题](http://stackoverflow.com/questions/5587585/java-lang-noclassdeffounderror) 似乎有一个类似的命令工作为了他。 –