我尝试了 Oracle Java 教程中的两个示例。它们都可以正常编译,但在运行时,都出现了此错误:Exception in thread \'main\' java.lang.NoClassDefFoundError:
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 IDEA ,但它们的概念相似。