J'ai essayé à la fois l'exemple dans les tutoriels Java d'Oracle . Ils compilent tous les deux très bien, mais au moment de l'exécution, les deux arrivent avec cette erreur:
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
Je pense que je pourrais avoir le Main.java
fichier dans le mauvais dossier. Voici la hiérarchie des répertoires:
graphics
├ Main.java
├ shapes
| ├ Square.java
| ├ Triangle.java
├ linepoint
| ├ Line.java
| ├ Point.java
├ spaceobjects
| ├ Cube.java
| ├ RectPrism.java
Et voici 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);
}
}
Qu'est-ce que je fais mal ici?
METTRE À JOUR
Après avoir mis la Main
classe dans le graphics
package (je l'ai ajouté package graphics;
), défini le chemin de classe sur "_test" (dossier contenant des graphiques), compilé et exécuté en utilisant java graphics.Main
(à partir de la ligne de commande), cela a fonctionné.
MISE À JOUR vraiment tardive # 2
Je n'utilisais pas Eclipse (juste Notepad ++ et le JDK), et la mise à jour ci-dessus a résolu mon problème. Cependant, il semble que beaucoup de ces réponses soient pour Eclipse et IntelliJ, mais elles ont des concepts similaires.
package graphics;
en haut). Estgraphics
la tête de la structure de votre package? Square a-t-ilpackage graphics.shapes
en haut?