2013-01-25 11 views
21

Mein Dateiverzeichnis:Exception in thread "main" java.lang.NoClassDefFoundError: falscher Name

project/src/m2mcom/entities/AutomatedTelnetClient.java 
      /web/Simple.java   
      /org/apache/commons/net/telnet/TelnetClient.java 

Der Quellcode des 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"); 
     } 
    } 
} 

Und wenn ich einfach auszuführen. Klasse, ohne Fehler bei der Kompilierung, bekomme ich diese Fehlermeldung:

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

Weiß jemand, wie man das löst?

+0

Werfen Sie einen Blick auf diesen Link werden Sie verstehen, warum Sie diesen Fehler erhalten, und wie es in der Zukunft zu vermeiden http://javarevisited.blogspot.co.uk/2011/06/noclassdeffounderror-exception-in.html – justMe

Antwort

36

Sie den Befehl im falschen Ordner sind ausgeführt wird, mit dem falschen Klassennamen. Sie müssen den vollständig qualifizierten Namen (FQN) verwenden, wenn Sie eine Java-Klasse ausführen. Und natürlich müssen Sie im richtigen Verzeichnis sein. In Ihrem Beispiel ist der FQN Ihrer Klasse m2mcom.web.Simple (Kombination des Paketsm2mcom.web und einfach Name Simple).

Soweit das richtige Verzeichnis abzuleiten, werden Ihre Klassen in einer hierarchischen Ordnerstruktur gespeichert, die im Wesentlichen in C:\Users\Victor\Desktop\project2\src beginnt. So

korrekt Ihr Programm ausführen, von C:\Users\Victor\Desktop\project2\src, tun;

java m2mcom.web.Simple 
+0

Ja , es funktionierte! Vielen Dank! Was war das Problem? – vicesbur

+0

Sie müssen voll qualifizierte Namen verwenden, wenn Java-Klassen ausgeführt wird, und Sie waren auch das Programm in den falschen Ordner ausgeführt wird. – Perception

+0

Vielen Dank für diese klare Antwort, Wahrnehmung! – user1511417

5
package m2mcom.web; 

über die Linie entfernen und neu kompilieren. : wenn Sie Ihren Code in NetBeans einschließlich es in einem m2mcom.web package.that ist in Ihrer Klasse-Datei nicht.

0

So haben Sie in dem Verzeichnis sein, direkt über dem Paketnamen, wenn Sie den Java-Befehl ausführen, die ohne die .class- Suffix in Form packageName.className sein sollte.

+0

ist das eine Frage? –

Verwandte Themen