Я спробував обидва приклади в навчальних програмах Java Oracle . Вони обоє складають чудово, але під час виконання, обидва приходять з цією помилкою:
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
керівник вашої структури пакунків? Чи має площаpackage graphics.shapes
вгорі?