如何解决java.lang.NoClassDefoundError?
我在Oracle的Java教程..它们都编译得很好,但在运行时,它们都出现了以下错误:Exception in thread "main" java.lang.NoClassDefFoundError: graphics/shapes/Square
at Main.main(Main.java:7)Caused by: java.lang.ClassNotFoundException: graphics.shapes.Square
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 1 more
我想我可能有Main.java文件在错误的文件夹中。以下是目录层次结构:graphics├ Main.java├ shapes| ├ Square.java| ├ Triangle.java├ linepoint| ├ Line.java| ├ Point.java├ spaceobjects|
├ Cube.java| ├ RectPrism.java
下面是Main.java:import graphics.shapes.*;import graphics.linepoint.*import graphics.spaceobjects.*;public class Main {
public static void main(String args[]) {
Square s = new Square(2,3,15);
Line l = new Line(1,5,2,3);
Cube c = new Cube(13,32,22);
}}
我在这里做错什么了?
更新
在我把Main类的graphics包(我加了package graphics;),将类路径设置为“_test”(包含图形的文件夹),编译它,然后使用java graphics.Main(从命令行),它起作用了。
非常晚的更新#2
我没有使用Eclipse(只有记事本+和JDK),上面的更新解决了我的问题。然而,这些答案中似乎有许多是针对Eclipse和IntelliJ的,但它们有类似的概念。