Ich habe seit Kurzem ein Problem, das ich vorher nie hatte.
Ich habe in einem Verzeichnis mehrere Klassen. Ich compiliere die erste -> ok. Dann kompiliere ich die zweite, die die erste Klasse instanziiert -> Fehlermeldung. Die erste Klasse ist unbekannt.
Mit Eclipse funktioniert es, mit TextPad nicht und mit DOS auch nicht.
publicclassTest{Klasse klasse =newKlasse();publicstaticvoidmain(String[] args){Test test =newTest();
test.klasse.schreibe();}}
erscheint die Fehlermeldung
C:\Dokumente und Einstellungen\Klaus\Eigene Dateien\Java-Programme\Test.java:3: cannot find symbol
symbol : class Klasse
location: class Test
Klasse klasse = new Klasse();
^
C:\Dokumente und Einstellungen\Klaus\Eigene Dateien\Java-Programme\Test.java:3: cannot find symbol
symbol : class Klasse
location: class Test
Klasse klasse = new Klasse();
^
2 errors
Wie ist das mit dem geheimnisvollen classpath ? Wie und was soll ich da "setzen" ?
Ich wäre Euch sehr dankbar, wenn mir das jemand mal richtig erklären könnte
Beide Klassen stehen im selben Verzeichnis. In dem schwarzen DOS-Fenster habe ich die richtige Datei als Adresse erzeugt.
Noch zwei Beobachtungen :
- Ich sehe die compilierten Klassen Test.class und Klasse.class im Explorer im richtigen Verzeichnis auftauchen.
- wenn ich beide Klassen in dieselbe Datei ("class Klasse" ohne "public") schreibe, kommt dieselbe Fehlermeldung "Exception in thread "main" java.lang.NoClassDefFoundError : Test"
...aber wieso lautet die Meldung eigentlich "Test" und nicht "Klasse" ? Es wird doch eigentlich "Klasse" nicht gefunden.
Wie XHelp schon gesagt hat ist dein Classpath falsch. Im Classpath sollte mindestens das aktuelle Verzeichnis (.) stehen. Den musst du unter den Systemvariablen mal richtig setzen. Dann kannst du auch ganz normal mit javac und java arbeiten.
Probier, [c]Klasse klasse = new Klasse();[/c] und [c]klasse.schreiben()[/c] in die main() Methode zu setzen. [c]Test test=new Test()[/c] löschen, sonst hast du ein Eintrag zuviel im Heap(Objekt-Speicher).
Wie XHelp schon gesagt hat ist dein Classpath falsch. Im Classpath sollte mindestens das aktuelle Verzeichnis (.) stehen. Den musst du unter den Systemvariablen mal richtig setzen. Dann kannst du auch ganz normal mit javac und java arbeiten.
Wo finde ich denn den classpath ? Ist es der in Systemsteuerung -> System ? Oder der im Registereditor ? Und wie ist er bezeichnet ? Und da soll ich einen Punkt hinsetzen ?
Es wäre sehr nett, wenn Du mir da erklären könntest.
Kommt auf deine Windows Version an. Irgendwo unter Systemsteuerung -> System -> Erweitert -> Umgebungsvariablen findest du die. Ansonsten einfach mal google bemühen wie das bei deiner Windowsversion machst.
Ich habe geklickt (Windows XP) : Start -> Systemsteuerunfg -> System -> Erweitert -> Umgebungsvariablen.
Dort steht im unteren Fenster "Systemvariablen" links "CLASSPATH" und rechts C:\Programme\WEVOSYS\lingDIALOG\b...
Ich bin im Windows-Explorer dieser Adresse gefolgt, habe mich bei "b..." für "bin" entschieden. Dort lachte mich eine Datei mit Namen "UpdateCurrentUserClasspath" an, da habe ich draufgeklickt. Danach musste ich nur noch neu starten und mein ebenso simpeles wie umstrittenes Programm "Test" lief !
Ich habe zwar immer noch nicht so recht verstanden, was da passert ist, aber Hauptsache, es läuft.