Klasse wird nicht gefunden

Kanitrino

Bekanntes Mitglied
Hallo allerseits,

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.

Wenn ich erst dieses
Java:
public class Klasse
{
	public void schreibe()
	{
		System.out.println("Hello World");
	}
}
und dann dieses Progamm compiliere,
Java:
public class Test 
{
	Klasse klasse = new Klasse();
	
	public static void main(String[] args) 
	{
		Test test = new Test();
		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

Prozess beendet mit Exit-Code 1

Weiß jemand einen Rat ?
 
Versuch es mal mit
Code:
javac -cp . Test.java
, wenn es klappt, dann ist deine Classpath-Variable falsch eingestellt
 
Jetzt wird ohne Fehlermeldung compiliert, beim Starten kommt jedoch
Exception in thread "main" java.lang.NoClassDefFoundError : Test

Was sagt uns das ?
 
von test brauchst du eigentlich kein Objekt erstellen
Java:
Test test=new Test() //kann weg und dann nur
klasse.schreiben();
 
Leider finde ich da keine Lösung für mich.

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.
 
Jetzt wird ohne Fehlermeldung compiliert, beim Starten kommt jedoch
Exception in thread "main" java.lang.NoClassDefFoundError : Test
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.
 
Hurra, hurra, jetzt funktioniert's !

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.

Vielen Dank an alle !
 

Neue Themen


Zurück
Oben