我正在学习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
异常错误。有什么问题
答案 0 :(得分:1)
(JP Moresmau和RC在评论中给出的答案,将其放在此处完成)。
在Java中,您需要在编译和运行时指定类路径。所以当你用
编译时javac -cp c:\Java Test.java
您正在使用c:\ Java作为EXTRA类路径参数编译当前目录中的Test类。
当您想要运行Test类时,您需要告诉Java在哪里找到它自己的类(在当前目录中)以及所需的类。如果你只是运行
java Test
Java将使用当前文件夹作为唯一的类路径,因此将找不到已在C:\ Java中编译的引用类。因此,您需要指定
java -cp "C:\Java;." Test
指出在哪里可以找到所有必需的课程。