[Java] CLASSPATH-Variable

patrick555

Cadet 2nd Year
Registriert
Aug. 2006
Beiträge
30
Hallo, ich hab da ein problem mit der CLASSPATH-Variable: Bei sun.de steht das java normalerweise im aktuellen verzeichnis (wenn mans über die eingabeaufforderung macht) nach den entsprechenden klassen sucht und wie man die variable verändert sodass sie auch in bestimmten verzeichnissen sucht. wenn ich sie z.b auf den desktop ändere läuft alles aber wenn ich in ein anderes verzeichnis wechsle müsste ich wieder die variable ändern/ergänzen. wie kann ich java so einstellen das es immer im aktuellen verzeichnis nach meinen klassen sucht?
 
AW: [Java]CLASSPATH-Variable

Beim Aufruf mit java.exe kannst du mit dem Parameter '-cp pfad' bzw. '-classpath pfad' angeben, in welchem Pfad er zusätzlich zum globalen Classpath (falls vorhanden) nachgucken soll. Hier kann auch explizit ein .jar-File stehen.
 
AW: [Java]CLASSPATH-Variable

ja, aber soweit ich weiss ist das dann nicht dauerhaft, also beim nächsten aufruf müsste ich dann schon wieder den ganzen pfad angeben. kann java nicht im momentanen verzeichnis nachschauen (z.B. C:\Dokumente und Einstellungen\Benutzer\Desktop>java Bsp)?
 
AW: [Java]CLASSPATH-Variable

Nun, wenn man ernsthaft etwas entwickeln möchte, lagert man die Dateien nicht auf dem Desktop, sondern nutzt ein Verzeichnis und bindet dann die notwendigen Klassen in den Klassenpfad ein (System>Erweitert>Umgebungsvariablen>Systemvariablen) - diese sind dann dauerhaft gesetzt. Du könntest eine IDE wie Eclipse nutzen, die übernimmt das mit den Klassenpfaden für dich (bzw. hilft dir beim Einbinden der Bibliotheken).

Alternativ wäre eine Batch-Datei, bei der du die Klassen einbindets, wie z.B. diese hier für XSLT:
Code:
@echo off
set libpath=c:\dev\lib
set CLASSPATH=%libpath%\xercesImpl.jar;%libpath%\xalan.jar;.
java org.apache.xalan.xslt.Process -IN %1 -XSL %2 -OUT %3
 
AW: [Java]CLASSPATH-Variable

ja, aber ich wollte eigentlich wissen warum java bei mir nicht im verzeichnis sucht in dem ich gerade bin("Exception in thread "main" java.lang.NoClassDefFoundError:xyz"), außerdem bin noch am lernen deswegen erstell ich bequemerweise die übungs-programmieraufgaben auf dem desktop da ich diese (kleineren) programme eh nur kurz brauche(zum erstellen und ausprobieren eben) und deswegen wärs halt praktisch wenn java im aktuellen verzeichnis suchen würde - was es aber eben nicht macht
 
Poste doch mal, wo genau deine .class-Dateien liegen, in welchen packages sie liegen und wie du sie aufrufst.
Vielleicht ist dort irgendwo ein Fehler drin.
 
ich rufe sie bis jetzt normalerweise über das dos-fenster von win xp auf, zb:
"C:\Dokumente und Einstellungen\Benutzer\Desktop>java HelloWorld"

das geht aber nur wenn ich die CLASSPATH-Variable auf genau
"C:\Dokumente und Einstellungen\Benutzer\Desktop" gesetzt habe, wenn ich also in "C:\Dokumente und Einstellungen\Benutzer\Desktop\Java" eine *.class-Datei ausführen gehts wieder nicht es sei denn ich habe vorher die classpath-variable entsprechend ergänzt.

laut meinem java-lernbuch sollte es überall funktionieren. darin ist beschrieben wie man java einrichtet(die java.exe findet er ja auch!) aber darin steht nicht das man die classpath-variable immer exat einstellen muss, sondern dass java.exe immer im aktuellen verzeichnis danach sucht.(des hab ich aber hier schon mehrmals geschrieben)
wenn ich aber jetzt zb in "C:\Temp>" eine *.class-datei ausführen kommt immer
"Exception in thread "main" java.lang.NoClassDefFoundError:HelloWorld".
kann mir denn niemand weiterhelfen?:heul:
 
Du kannst die CLASSPATH-Variable (Arbeitsplatz->Eigenschaften->Erweitert->Umgebungsvariablen) um ";." erweitern.

Dann sucht java.exe automatisch im aktuellen Verzeichnis, egal wo das jetzt sein mag.

Eventuell sucht java.exe nur dann im aktuellen Verzeichnis, wenn es keine Umgebungsvariable namens CLASSPATH gibt.
 
Zurück
Oben