NoClassDefFoundError

Boom

Mitglied
Hallo,
ich programmiere seit Java noch nicht lange und lerne grad durch ein Buch. ("Java von Kopf bis Fuß")
Dort wird am Anfang angegeben, dass man wenn man das jeweilige programmierte "Programm" starten möchte, und nicht immer den Pfad Weg zum jdk.. Ordner angeben möchte, einen PATH Eintrag erstellen muss.

Ich habe auch ein Tutorial darüber gelesen, ABER nachdem ich den PATH Eintrag nach dem Muster eingegeben habe (PC danach neugestartet) kommt trotzdem noch die Fehlermeldung: "Exception in Thread "main" java.lang.NoClassDefFoundError: [...]

Könnt ihr mir weiterhelfen?
Ich benutze Windows 7 Ultimate 32 - Bit.
Den Code schreibe ich per Notepad ++ Editor, daher kompiliere ich per "Eingabeaufforderung".

Hoffe um Hilfe, danke.

MfG
 
Zuletzt bearbeitet von einem Moderator:
wobei kommt der Fehler, welche Java-Befehle tippst du auf der Konsole ein?
von welchem Verzeichnis exakt aus?
wo liegen .java-Dateien, wie sehen diese aus?

verwende 'dir' in der Konsole um exakte Anzeigen zu erhalten,
in Windows-Exporer könnte Xy.java.txt als Xy.java angezeigt werden
 
Wie kompilierst du deine Klasse?
Wie startest du die danach?

Sowas wie: "java C:/mein/pfad/zur/datei" funzt nicht. Dafür müsstest du dann noch deinen Classpath anpassen, das würde ich anfangs aber sein lassen. Geh in den Ordner wo deine class datei liegt und dort dann einfach: "java meineClass".
 
Das JDK findet er schon, sonst würde er keine Exception werfen. Um welche Klasse handelt es sich denn, und wie genau sieht dein Aufruf aus?
 
Also:
die Klasse heißt "bierlied" (von Java von Kopf bis Fuß ^^)

und in der Eingabeaufforderung gebe ich zuerst "javac bierlied.java" ein (Die Datei liegt bei C:/User/Paul)

Da bekomm ich noch keine Fehler.

Aber wenn ich dann "java bierlied.class" mache, dann bekomm ich halt diese Fehlermeldung (habe auch schon "java bierlied.java" oder "java bierlied" gemacht, klappte ebenfalls nicht.)

In der Eingabeaufforderung ist der Pfad "C:\User\Paul>"
 
Das command dafür heißt:
Code:
java bierlied
Du gibst java nur den Klassennamen an. Die entsprechenden Dateien sucht es sich dann automatisch im classpath.

EDIT:
([...] oder "java bierlied" gemacht, klappte ebenfalls nicht.)
Das sollte aber funktionieren, kommt der selbe fehler?
 
Das command dafür heißt:
Code:
java bierlied
Du gibst java nur den Klassennamen an. Die entsprechenden Dateien sucht es sich dann automatisch im classpath.

Wie ein Post über dir in Klammern, sogar wenn ich es so eingebe funktioniert es nicht, sondern spuckt die Fehlermeldung aus. ^^

Edit:
Das sollte aber funktionieren, kommt der selbe fehler?

Jep, der selbe Fehler
 
Zuletzt bearbeitet:
geht
java -cp . bierlied
?

liefert 'dir' eine ensprechende .class-Datei in diesem Verzeichnis?
wie sieht die .java-Datei aus? wie heißt die Klasse darin?
 
geht
java -cp . bierlied
?

liefert 'dir' eine ensprechende .class-Datei in diesem Verzeichnis?
wie sieht die .java-Datei aus? wie heißt die Klasse darin?

java -cp . bierlied geht auch nicht, kommt: "Unrecognized Option: -" "Could not create the Java Virtual Machine"

Zum anderen:

"dir" gibt aus: 1.030 bierlied.class
771 bierlied.java
0 CLASSPATH
[...]
 
> "Unrecognized Option: -" "Could not create the Java Virtual Machine"

hast du ein Leerzeichnen nach dem - eingetippt?
Screenshot wäre hilfreich, kannst du direkt hier im Forum ans Posting anhängen,

was liefert
echo %CLASSPATH%
?

und bitte komplette bierlied.java-Datei posten/anhängen
 
Also:
die Klasse heißt "bierlied" (von Java von Kopf bis Fuß ^^)
Wage mal zu bezweifeln, dass die Autoren von "Java von Kopf bis Fuß" so schlampig arbeiten und die Klasse "bierlied" nennen. Wenn dann wohl eher "Bierlied" oder "BierLied" ;-)

Hast Du das class-File auch über diesen Weg erzeugt? Oder wie kommt das Zustande?
Wenn
Code:
javac bierlied.java
geht, sollte eigentlich auch
Code:
java bierlied
funktionieren.
 
> "Unrecognized Option: -" "Could not create the Java Virtual Machine"

hast du ein Leerzeichnen nach dem - eingetippt?
Screenshot wäre hilfreich, kannst du direkt hier im Forum ans Posting anhängen,

was liefert
echo %CLASSPATH%
?

und bitte komplette bierlied.java-Datei posten/anhängen

Hab jetzt die Eingabeaufforderung geschlossen, wieder neu gestartet und " java -cp . bierlied" eingegeben, und es hat geklappt.

Jedoch, wieso muss ich das "-cp ." dazu hinzufügen, oder eher gesagt, wie kann man es beheben, sodass man nur "java bierlied" eingeben muss?

@Michael..
Ja dort steht "BierLied", jedoch als ich die Klasse so nannte hat die Eingabeaufforderung einen Error bekommen, dass der Name der Datei nicht übereinstimmt, obwohl ich sie genau so benannt habe, da als ich die Datei gespeichert hab, die Groß - und Kleinschreibung immer zurückging.
Deshalb habe ich einfach beide (Klasse sowohl auch Datei) in kleinbuchstaben geschrieben
 
Zuletzt bearbeitet:
Wage mal zu bezweifeln, dass die Autoren von "Java von Kopf bis Fuß" so schlampig arbeiten und die Klasse "bierlied" nennen. Wenn dann wohl eher "Bierlied" oder "BierLied" ;-)

Hast Du das class-File auch über diesen Weg erzeugt? Oder wie kommt das Zustande?
Wenn
Code:
javac bierlied.java
geht, sollte eigentlich auch
Code:
java bierlied
funktionieren.


Da hast Du recht. In besagtem Buch auf Seite 14 heisst die Klasse BierLied und sofern der Code auch so eingegeben worden ist muss sowohl bei javac wie auch bei java BierLied verwendet werden.
 
> Hab jetzt die Eingabeaufforderung geschlossen, wieder neu gestartet

nach einer solchen Änderung könnte es auch ohne -cp . gehen, getestet?
echo %CLASSPATH%
auch ausprobiert?

meine Vermutung dazu ist, dass eine Umgebungsvariable CLASSPATH schlecht angelegt wurde,
beste Lösung: keine solche Umgebungsvariable,
zweitbeste Lösung: den Punkt . fürs aktuelle Verzeichnis in den CLASSPATH aufnehmen: ".;c/lib/xy/....."

Änderungen an Umbegungsvariablen werden erst in späteren neu-geöffneten Konsolen wirksam
 
> Hab jetzt die Eingabeaufforderung geschlossen, wieder neu gestartet

nach einer solchen Änderung könnte es auch ohne -cp . gehen, getestet?
echo %CLASSPATH%
auch ausprobiert?

meine Vermutung dazu ist, dass eine Umgebungsvariable CLASSPATH schlecht angelegt wurde,
beste Lösung: keine solche Umgebungsvariable,
zweitbeste Lösung: den Punkt . fürs aktuelle Verzeichnis in den CLASSPATH aufnehmen: ".;c/lib/xy/....."

Änderungen an Umbegungsvariablen werden erst in späteren neu-geöffneten Konsolen wirksam

Sry "echo %CLASSPATH%" vergessen einzugeben, ergeben tuts: "C:\Program Files\Java\jre6\lib\ext\QTJava.zip
und nach der Neustartung ohne "-cp ." gings wieder nicht.
-
Noch relevant wäre es vielleicht, das ich in meinem Java Ordner den Ordner "jdk1.6.0_21" und "jre6" habe.

@ Michael ich befinde mich in dem selben Verzeichnis wie die Dateien die ich aufrufen möchte.
 
wie ich gesagt habe musst du nun
1) entweder immer -cp . eintippen
2) die beste Lösung wählen (besonders wenn du nichts von QT weißt)
3) die zweitbeste Lösung wählen, konkret also den CLASSPATH auf .;C:\Program Files\Java\jre6\lib\ext\QTJava.zip ändern

wie du Umgebungsvariablen änderst sagt dir google
Google
 
Okay, vielen Dank SlaterB.
Habe die Umgebungsvariable geändert in das was du gesagt hast, plus dazu noch durch ein ";" abgetrennt den ordner zum jdk1.6.0_21.

Und nun klappts, danke. 🙂
 

Neue Themen


Zurück
Oben