web-dev-qa-db-fra.com

Exception dans le fil "principal" Java.lang.NoClassDefFoundError: nom incorrect

Mon répertoire de fichiers:

project/src/m2mcom/entities/AutomatedTelnetClient.Java
           /web/Simple.Java           
           /org/Apache/commons/net/telnet/TelnetClient.Java 

Le code source de Simple.Java:

package m2mcom.web;
import m2mcom.entities.AutomatedTelnetClient;
import Java.util.*;
import Java.io.*;

public class Simple {
    public static void main(String [] args) {
        try {
            AutomatedTelnetClient telnet = new AutomatedTelnetClient();
            String answer = telnet.request();
            System.out.println(answer);
        } catch (Exception e) {
            System.err.println("Error");
        }
    }
}

Et quand j'exécute Simple.class, sans aucune erreur de compilation, je reçois ce message d'erreur:

C:\Users\Victor\Desktop\project2\src\m2mcom\web>Java Simple
Exception in thread "main" Java.lang.NoClassDefFoundError: Simple (wrong name: m
2mcom/web/Simple)

Quelqu'un sait-il comment résoudre ceci? 

21
vicesbur

Vous exécutez la commande dans le mauvais dossier, avec le mauvais nom de classe. Vous devez utiliser le nom complet (FQN) lors de l'exécution d'une classe Java. Et bien sûr, vous devez être dans le bon répertoire. Dans votre exemple, le FQN de votre classe est m2mcom.web.Simple (combinaison du packagem2mcom.web et du simple nom Simple). 

En ce qui concerne le bon répertoire, vos classes sont stockées dans une structure de dossiers hiérarchique, qui commence essentiellement par C:\Users\Victor\Desktop\project2\src.

Donc, pour exécuter correctement votre programme, à partir de C:\Users\Victor\Desktop\project2\src, faites;

Java m2mcom.web.Simple
36
Perception
package m2mcom.web;

supprimez la ligne ci-dessus et recompilez-la . lorsque vous exécutez votre code dans netbeans, y compris dans un package m2mcom.web.that n'est pas dans votre fichier de classe.

5
Prasad De Silva

Vous devez donc figurer dans le répertoire situé juste au-dessus du nom du package lorsque vous exécutez la commande Java, qui doit se présenter sous la forme packagename.classname sans suffixe .class. 

0
scvblwxq