NoClassDefFoundError
muenzchen
- java
Hallo!
Habe folgendes Programm:
import java.lang.*
public class bsp {
public static void main(String[] args) {
System.out.println("TEST!!!");
}
}
Die unkompilierte Datei dazu heißt "bsp.java", lässt sich auch problemlos kompilieren und heißt dann "bsp.class". Wenn ich sie dann aufrufe mit "java bsp" bekomme ich die bekannte Fehlermeldung: Exception in thread "main" java.lang.NoClassDefFoundError: bsp
Ich hab mir echt schon alle Themen dazu durchgelesen, aber es hat nix gebracht. Der Patz ist richtig gesetzt: C:\Programme\JDK\bin
Dahin hab ich auch JDK installiert. Dann habe ich noch versucht den Classpath zu setzen, zuerst auf C:\Programme\JDK\bin dann nur auf C:\ aber das hat alles nichts gebracht.
Ich benutze Windows XP Pro und JDK 1.3.1_01
Ihr seid echt meine letzte Hoffnung!
Hi,
Habe folgendes Programm:
import java.lang.*
public class bsp {
public static void main(String[] args) {
System.out.println("TEST!!!");
}
}
Die unkompilierte Datei dazu heißt "bsp.java", lässt sich auch problemlos kompilieren und heißt dann "bsp.class". Wenn ich sie dann aufrufe mit "java bsp" bekomme ich die bekannte Fehlermeldung: Exception in thread "main" java.lang.NoClassDefFoundError: bsp
Ich hab mir echt schon alle Themen dazu durchgelesen, aber es hat nix gebracht. Der Patz ist richtig gesetzt: C:\Programme\JDK\bin
Dahin hab ich auch JDK installiert. Dann habe ich noch versucht den Classpath zu setzen, zuerst auf C:\Programme\JDK\bin dann nur auf C:\ aber das hat alles nichts gebracht.
Der Classpath heißt Classpath, weil er der Pfad für class-Files ist.
In JDK\bin sind aber keine Klassen, sondern ausführbare Programme (darum sollte dieses Verzeichnis im PATH liegen).
Der CLASSPATH muß also die Verzeichnisse enthalten, in denen die Klassen liegen.
Empfehlenswert:
an den Anfang das Verzeichnis .
also
.;c:\blabla
Andreas
Der Punkt am Anfang bei Classpath bringt auch keine Änderung :(
Der Punkt am Anfang bei Classpath bringt auch keine Änderung :(
Hallo,
also mal langsam:
Die bsp.class liegt im aktuellen Verzeichnis.
java bsp
bringt:
Exception in thread "main" java.lang.NoClassDefFoundError: bsp
java -cp . bsp
bringt auch
Exception in thread "main" java.lang.NoClassDefFoundError: bsp
???
oder wie?
Gruß
Axel
java -cp . bsp
bringt auch
Exception in thread "main" java.lang.NoClassDefFoundError: bsp
???
Axel! Du bist mein Retter! Warum funktionierts so? Das versteh ich jetzt nicht. Was wird da übersprungen oder auch nicht? Weil java -cp bsp gibt nur eine Liste von Befehlen aus.
Achja zu dem fehlenden Semikolon. Das ist bei mir drin, hab nur beim Kopieren die erste Zeile vergessen und sie dann im Post händisch hinzugefügt. Dabei muss ich das vergessen haben.
Hallo,
java -cp . bsp
Warum funktionierts so? Das versteh ich jetzt nicht.
Mit -cp <pfad> fügst du den angegebenen Pfad dem classpath hinzu, also
den Verzeichnissen und Dateien, in denen Java nach deinen Klassen sucht.
In diesem Fall fügst du das aktuelle Verzeichnis (.) zum classpath hinzu.
Eigentlich sollte das - wie schon geschrieben - seit Java 2 (also JDK 1.2
und folgende) nicht mehr notwendig sein, da Java zumindest bei einer
Standard-Windowsinstallation implizit das aktuelle Verzeichnis, sowie
die Standard-API-Klassen im classpath hat.
Da es bei mir auch so funktioniert, muß bei dir ein Konfigurationsproblem
vorliegen. Evtl. hast du noch irgendwie in der autoexec.bat oder
einer der anderen Dateien einen classpath gesetzt. (Der wird
nämlich noch immer verwendet, sofern er vorhanden ist.) Oder aber
bei deiner Installation der JRE ist etwas schief gelaufen. In diesem
Fall solltest du die JRE bzw. das SDK nochmal drüberinstallieren.
Gruß
Slyh
Hallo,
Der Classpath heißt Classpath, weil er der Pfad für class-Files ist.
In JDK\bin sind aber keine Klassen, sondern ausführbare Programme (darum sollte dieses Verzeichnis im PATH liegen).
Richtig, im PATH sollte das Bin-Verzeichnis liegen.
Eine CLASSPATH-Variable ist seit Java2 (?) aber nicht mehr notwendig.
Die Runtime Environment weiß von selbst, wo die API-Klassen liegen und
fügt außerdem automatisch das aktuelle Verzeichnis zum classpath hinzu.
Worin der Fehler von muenzchen nun liegt, kann ich aber auch nicht sagen.
Das oben zitierte Java-Programm ließ sich - bis auf das fehlende
Semikolon in der 1. Zeile - problemlos kompilieren und anschließend
ausführen.
Gruß
Slyh