Java - NoClassDefFoundError

标签 java exception noclassdeffounderror

我需要编译一个外部 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/

相关文章:

java - Java 的 Vector 和 JTable 的问题

java - 比较 ArrayList 中的 HashMap 值

java - org.plasma.query.OrderBy 不工​​作

java - 输入不匹配异常

python - 如何知道 Python subprocess.check_output() 调用的确切输出?

java - 如何传输参数到重定向jsp,该参数可以访问到该jsp

javascript - 如何在异常时停止浏览器

java - 我如何从 jasperserver 获取报告

hdfs - Hadoop/HDFS 3.1.1(在 Java 11 上)加载文件资源管理器时 Web UI 崩溃?

java - 马文: "NoClassDefFoundError: com/jogamp/newt/event/KeyListener"