在 Java 中获取 NoClassDefFoundError

Getting NoClassDefFoundError in Java

我正在 java 学习 classpath。我创建了一个名为 Geometry 的包,它存储在 C:\Java\ 中,其中包含一个文件 Point.java,其中包含以下代码

package Geometry;

public class Point 
{
    double x;
    double y;

    public Point(double xVal, double yVal) 
    {
        x = xVal;
        y = yVal;
    }

    public Point(final Point oldPoint) 
    {
        x = oldPoint.x;
        y = oldPoint.y;
    }

    void move(double xDelta, double yDelta)
    {
        x += xDelta;
        y += yDelta;
    }

    double distance(final Point aPoint)
    {
        return Math.sqrt(  Math.pow((x - aPoint.x), 2) + Math.pow((y - aPoint.y), 2)  );
    }

    public String toString()
    {
        return x + ", " + y;
    }

}

然后我在 C:\Users\username\workspace\Test 中创建了另一个名为 Test.java

的文件

其中包含以下内容

import Geometry.*;

public class Test 
{
    public static void main(String[] args) 
    {       
        Point l1 = new Point(1,2,3,4);
        System.out.println(l1);
    }

}

然后使用

编译
C:\Users\username\workspace\Test>javac -cp c:\Java Test.java

它编译成功但在 运行 时间内抛出 NoClassDefFoundError 异常错误。有什么问题

(JP Moresmau 和 RC 在评论中给出的答案,将其放在这里完成)。

在Java中,编译时和运行ning时都需要指定class路径。所以当你用

编译时
javac -cp c:\Java Test.java

您正在当前目录中编译测试 class,使用 c:\Java 作为额外的 class 路径参数。

当你想运行测试class时,你需要告诉Java在哪里可以找到它自己的class(在当前目录中)而且需要 classes。如果你只是 运行

java Test

Java 将使用当前文件夹作为唯一的 class 路径,因此不会找到已在 C:\[=25 中编译的引用的 class =].因此你需要指定

java -cp "C:\Java;." Test

指明在哪里可以找到所有必需的 classes。