Tôi đã thử cả hai ví dụ trong Hướng dẫn Java của Oracle . Cả hai đều biên dịch tốt, nhưng tại thời điểm chạy, cả hai đều gặp phải lỗi này:
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
Tôi nghĩ rằng tôi có thể có các Main.java
tập tin trong thư mục sai. Đây là hệ thống phân cấp thư mục:
graphics
├ Main.java
├ shapes
| ├ Square.java
| ├ Triangle.java
├ linepoint
| ├ Line.java
| ├ Point.java
├ spaceobjects
| ├ Cube.java
| ├ RectPrism.java
Và đây là 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);
}
}
Tôi làm gì sai ở đây?
CẬP NHẬT
Sau khi tôi đặt Main
lớp vào graphics
gói (tôi đã thêm package graphics;
vào nó), đặt đường dẫn lớp thành "_test" (thư mục chứa đồ họa), biên dịch nó và chạy nó bằng cách sử dụng java graphics.Main
(từ dòng lệnh), nó đã hoạt động.
CẬP NHẬT thực sự muộn # 2
Tôi đã không sử dụng Eclipse (chỉ Notepad ++ và JDK) và bản cập nhật ở trên đã giải quyết vấn đề của tôi. Tuy nhiên, dường như nhiều câu trả lời trong số này là dành cho Eclipse và IntelliJ, nhưng chúng có các khái niệm tương tự nhau.
package graphics;
ở trên cùng). Làgraphics
người đứng đầu cấu trúc gói của bạn? Liệu Square cópackage graphics.shapes
ở trên cùng?