Exception in thread "main" java.lang.NoClassDefFoundError: MeineKlasse

mrbela

Bekanntes Mitglied
Hallo Leute!

Wenn ihr den Titel dieses Posts lest, rollen sich wahrscheinlich schon Eure Fußnägel hoch, dennoch möchte ich es mal probieren.. 😉

Ich kann Programme aus Eclipse heraus wunderbar starten.. Alles klappt wie gewohnt.

Möchte ich nun aber das gleiche über die Kommandozeile tätigen ("java MeineKlasse"), kommt oben genannter Fehler?!?

Ich habe die Umgebungsvarialbe PATH richtig gesetzt und auch wenn ich meine Klasse mit "javac" erst compilieren lasse und dann versuche auszuführen, kommt der Fehler... 🙁

Danke für die Hilfe!!
 
Bist du sicher, dass der absolute Path angegeben ist?

Ist die Klasse richtig geschrieben (Groß-/Kleinschreibung)?

Ist die Main-Methode richtig deklariert?
 
Bist du sicher, dass der absolute Path angegeben ist?

Ist die Klasse richtig geschrieben (Groß-/Kleinschreibung)?

Ist die Main-Methode richtig deklariert?

Kann ich eigtl alles mit "ja" beantworten...

Mein Path sieht wie folgt aus: "C:\jet7.6-eval\bin;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\MySQL\MySQL Server 5.5\bin;C:\Program Files\Common Files\iZotope\Runtimes;C:\Program Files\QuickTime\QTSystem\;C:\Program Files\Windows Live\Shared;C:\Program Files\MiKTeX 2.9\miktex\bin\;C:\Program Files\Java\jdk1.7.0_04\bin"

Ganz am Ende ist das Java drinnen.

Dann gibts noch ne Umgebungsvariable CLASSPATH: ".;C:\Program Files\Java\jre6\lib\ext\QTJava.zip"



Was hat eigtl dieser Fehler zu bedeuten, bzw. wann wird er ausgelöst?!
 
Code:
C:\Program Files\Java\jdk1.7.0_04\bin

Schau mal nach, ob dieser Pfad existiert.

Die neueste Version von JDK ist 7u7 soweit ich weiß - das heißt, wenn du ein Update draufgespielt hast, ist der PATH ungültig.

Code:
NoClassDefFoundError
wird ausgelöst, wenn zur Laufzeit die Klasse nicht gefunden wird, die zur Compilezeit noch da war.

Gib mal den absoluten Pfad zu deiner Klasse an!
also "java C:\blabla\blabla\bin\MeineKlasse[.class]"

E: okay, so geht's nicht...
Du musst dich in den Pfad reinarbeiten mit
Code:
cd C:
,
Code:
cd blabla
,
Code:
cd blabla
,
Code:
cd bin
und dann
Code:
java MeineKlasse
...
 
Zuletzt bearbeitet:
Gib mal den absoluten Pfad zu deiner Klasse an!
also "java C:\blabla\blabla\bin\MeineKlasse[.class]"
Das wird nicht funktionieren.
Code:
java
erwartet nicht den Pfad zur Klasse, sondern denn vollqualifizierten Klassennamen. Die Klasse muss sich dann (irgendwie) im Classpath befinden.

@TO:
Probier mal folgendes:
Code:
java -cp . MeineKlasse
Falls das funktioniert, dann ist dein ClassPath falsch konfiguriert. Hast du an der Umgebungsvariablen mal rumgespielt? Da gehört mindestens der aktuelle Pfad
Code:
.
mit rein.

Wenn das nicht hilft, dann poste mal was:
Code:
java -version
und
Code:
javac -version
ausgeben.
 
Der Pfad existiert! Hatte ihn bevor ich hier gepostet habe gesetzt.. Gerade auch nochmal kontrolliert!

Der genaue Pfad ist der hier:
C:\Users\Armin\workspace_privat\Test\bin\splashscreen
 
Daran wird's also liegen.

Du musst
Code:
cd C:\Users\Armin\workspace_privat\Test\bin\
eingeben, und danach:

Code:
java splashscreen.MeineKlasse

Probier das mal so.
 
Probier mal folgendes:
java -cp . MeineKlasse
Falls das funktioniert, dann ist dein ClassPath falsch konfiguriert. Hast du an der Umgebungsvariablen mal rumgespielt? Da gehört mindestens der aktuelle Pfad . mit rein.

Da kommt leider der gleiche Fehler.. 🙁

java -version:
java version "1.7.0_07"
Java(TM) SE Runtime Environment (build 1.7.0_07-b11)
Java HotSpot(TM) Client VM (build 23.3-b01, mixed mode, sharing)

javac -version:
javac 1.7.0_04


Danke für Eure Hilfe!!!
 
Daran wird's also liegen.

Du musst cd C:\Users\Armin\workspace_privat\Test\bin\ eingeben, und danach:

java splashscreen.MeineKlasse

Probier das mal so.


ES GEEEEEEEEEEHT!!! 🙂 🙂 🙂
Daaaankeeeeeeee!

Nur musst Du mir jetzt noch erklären, wo mein Fehler war??? Warum muss den Befehl aus dem bin Ordner ausführen und nicht direkt aus dem package-Ordner?
 
Mujahiddin wird recht haben, sieht stark danach aus, als ob du das Package geflissentlich ignoriert hast


edit:
weil nur so die ganze package struktur von java erfasst wird.
Die Klasse ist dann nunmal packacke.Klasse nicht mehr nur Klasse. Sobald du mehrere Packages in einem Projekt hast, würde Java die anderen Klassen sonst auch nicht mehr finden.
 
Jetzt hab ich noch ne Frage, die mir spontan kommt:

Ändere ich was in Eclipse und klicke auf speichern und rufe dann wieder "java (packagename).MeineKlasse" auf, dann hat er die Ändnerung übernommen.
Muss die Änderung aber eigtl nicht neu kompiliert werden!? Oder macht Eclipse das beim Spiechern?

Danke..!
 
Passiert nicht beim Speichern, soweit ich weiß. Kann es aber nicht sicher sagen.

Warum solltest du es denn in Eclipse schreiben und dann außerhalb ausführen??
 

Neue Themen


Zurück
Oben