我已经尝试了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(只是Notepad ++和JDK),因此上述更新解决了我的问题。但是,似乎许多答案都是针对Eclipse和IntelliJ的,但是它们具有相似的概念。
package graphics;
在顶部)。是graphics
您包装结构的头吗?Squarepackage graphics.shapes
在顶部吗?