Je travaille sur un projet Java dans NetBeans et il fonctionne parfaitement lorsque j'appuie sur le bouton Exécuter le projet. Cependant, j'ai besoin de lancer le programme depuis le terminal. J'ai ouvert le répertoire qui contient le fichier de classe, search.class et essayé de courir avecJava NoClassDefFoundError quand le fichier .class existe
java search
Cependant, je reçois une erreur:
Exception in thread "main" java.lang.NoClassDefFoundError: search (wrong name: search/search)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Je ne peux pas pour la vie de me comprendre pourquoi il dit "mauvais nom" puisque search.class existe dans ce répertoire. Ma seule pensée est qu'il y a des fichiers .jar que j'appelle de mon programme (ils sont dans le même répertoire) et peut-être que je dois les inclure à l'exécution?
Toute aide serait grandement appréciée!
EDIT: Il s'est avéré que c'était probablement un problème de ne pas inclure les fichiers .jar. Je l'ai corrigé en allant dans le dossier dist/où le projet entier est empaqueté en jar et en l'exécutant comme java -jar search.jar
Merci pour tous les commentaires!
Est-ce que cette classe est dans un paquet? Quel est le nom de la classe? Pouvez-vous montrer la signature de la classe? C'est la ligne qui commence ... 'public class MyClass {' Dans quel paquet appartient la classe? –