Autor Thema: Frage zu classpath , path etc  (Gelesen 5037 mal)

Offline qojote

  • Aktives Mitglied
  • ***
  • Beiträge: 229
  • I love YaBB 1G - SP1!
Frage zu classpath , path etc
« am: 07.08.04 - 12:22:47 »
Hi,

Ich hhabe eine java Klasse die befindet sich in C:\tomcat\webapps\axis\kapitel4\xy.class

diese Klasse benötigt Klassen aus packeten die
c:\tomcat\webapps\axis\WEB-INF\lib liegen wenn ich nun versuche die mit java 'kommando' versuche auszuführen werden die benötigten klassen aus dem lib Verzeichnis nicht gefunden wenn ich das ganze mit java -cp dateien aus libverzeichnis aufrufe findet der die entsprechenden klassen da nun im libverzeichnis sehr viele *.jars sind die ich benötige hab ich keine Lust die alle einzel anzugeben.
Ich hab die Klassen in System in die path variable ingetragen bringt nichts.
Wenn ich Sie in den classpath eintrage wird die Basisklasse im verzeichnis Kapitel 4 nicht mehr gefunden.
Was mach ich falsch ?

Gruß
qojote

Marinero Atlántico

  • Gast
Re:Frage zu classpath , path etc
« Antwort #1 am: 08.08.04 - 09:11:24 »
Hi,

die Path-Variable hat mit Java Klassen eigentlich erstmal nichts zu tun.
Sie enthält nur Pfade von Verzeichnissen, wo das Betriebssystem nach ausführbaren Programmen sucht.
Deshalb steht JAVA_HOME\bin auch im Path. Und deshalb findet das Betriebssystem auch javac.exe, wenn du javac MyClass.java in das cmd-Fenster eingibst.

Der Classpath ist hingegen spezifisch Java. Ich würde ihn nur nicht global setzen. Es gibt bessere Möglichkeiten. Später mehr dazu.

Java sucht nach den Klassen in den im Classpath eingetragenen .jar und .class.
Unten sagst du, dass xy.class nicht gefunden wird. Die steht nicht im Classpath.
Du solltest im Classpath immer ein . eintragen. Dann sucht Java auch im gegenwärtigen Verzeichnis.
Du bist im cmd in C:\tomcat\webapps\axis\kapitel4
Wenn der Punkt im Classpath ist, wird xy.class automatisch gefunden (wegen dem Punkt = gegenwärtiges Verzeichnis).

Du kannst  das im globalen Classpath eintragen, indem du einfach ein
;.
ans Ende des jetzigen wertes setzt.

Lokal lässt sich das wie folgt setzen:
Code
set Classpath=%Classpath%;.
(wobei %Classpath% heisst: übernehme den jetzigen Classpath)

Die imho bessere Lösung besteht darin, den Classpath nicht in die globale Umgebungsvariable zu friemeln, sondern pro Entwicklungs-Projekt ein eigenes batch-file zu schreiben (beim deployen einer Anwendung an Anwender gehst du sowieso ganz anders vor).
Falls du die Umgebungsvariable AXIS_HOME gesetzt hast, kannst du einfach
1. die Endung dss angehängte txt files in .bat ändern (atnotes akzeptiert keine .bat attachments)  
2. das bat file in JAVA_HOME\bin (da wo javac.exe ist) legen (dann kannst du es von überall aufrufen, weil es ja im PATH des OS ist).
und dann bei jeder neuen Sitzung:
1. Öffne das cmd Fenster.
Schreibe axisEnv
Return Taste (es müsste jetzt eine Ausgabe des neuen Classpath erscheinen).
Danach kannst du zu xy.java navigieren und diese kompilieren und aufrufen.

Noch besser ist das ganze in Eclipse zu schreiben. Das Äquivalent zum Classpath ist der Javabuildpath des Projektes. Die entsprechende GUI zum setzen erhälst du, indem du die rechte Maustaste auf das Projekt klickst und dann Properties (ganz unten im Kontextmenü klickst). Es erscheint ein Dialogfenster. Wähle Java-Build-Path und dort Libraries. Sofern du nicht mit team Entwicklung mit concurrent version system machst, kannst du gefahrlos über Add External Library die entsprechenden .jars in den Classpath des Projekts setzen.

Mehr Info (ausser "meinem" Punkt-Trick) gibt es hier: http://www-106.ibm.com/developerworks/db2/library/techarticle/dm-0408anderson2/

Gruß Axel  

Classpath kann ein sehr nerviges Thema sein, deshalb ist es gut sich ein bischen auszukennen.
Praktisch jeder hatte damit mal ein Problem
Es gibt dort auch advanced Bereiche, die uns manchmal in den Wahnsinn treiben.
Bei vielen Java Produkten (übrigens auch Tomcat und Notes) hast du einen hierarchischen mehrstufigen Classloader.
Bei Websphere kannst du die Hierarchie quasi beliebig umdrehen.
Es gibt auch Produkte (wie z.B. Jira) wo es einen dynamischen Classloader gibt. Aber das führt erstmal zu weit.  
« Letzte Änderung: 08.08.04 - 11:46:41 von Marinero Atlántico »

Marinero Atlántico

  • Gast
Re:Frage zu classpath , path etc
« Antwort #2 am: 08.08.04 - 11:32:06 »
In Eclipse sieht das so aus:
(nach rechte Maustaste auf Projekt und Properties in Kontextmenü und dem integrieren der jars über add external jar)



Frage: Warum tust du eigentlich einen axis client für einen Tomcat_Axis_Webservice in ein Tomcat-Verzeichnis?
« Letzte Änderung: 08.08.04 - 11:38:01 von Marinero Atlántico »

Offline qojote

  • Aktives Mitglied
  • ***
  • Beiträge: 229
  • I love YaBB 1G - SP1!
Re:Frage zu classpath , path etc
« Antwort #3 am: 08.08.04 - 23:33:35 »
Hi,

vielen Dank für deine Erklärung hat mir sehr weitergeholfen.
Ich hab den Client dahin kopiert weil es so im Buch stand.
Fand ich zwar auch seltsam aber um nicht noch mehr Probleme zubekommen wollt ich mich mal an das Beispiel halten.
Jetzt bekomm ich zwar keine Fehlermeldungen mehr das iregndwelche klassen Fehlen dafür gibt es eine java.lang.nosuchfielderror.
Ich hab keine Ahnung ob der Quelltext überhaupt funktioniert werd mir morgen mal ein anderes Tutorial nehmen und abtippen und dann mal schauen was da so passiert Ich hab dir den Webservice und den Client mal anghänt vielleicht könntest du ja mal schauen ob das bei dir läuft.
Auruf java kapitel4.Kurs_Tester_1 http://localhost:8080
Vielen Dank
Gruß
Qojote

 

Marinero Atlántico

  • Gast
Re:Frage zu classpath , path etc
« Antwort #4 am: 09.08.04 - 07:10:49 »
...da ich momentan sehr viel zu tun habe, Dienstag abend oder Freitag.

Du kannst den Client eigentlich sehr gut mit Eclipse testen.
Der Client ist nur sehr lose mit dem Server gekoppelt.
Du tust einfach nur das Client Projekt in Eclipse.
Da ist schon mal ein guter Debugging support.

Ich mach jetzt nochmal Werbung für:
Einfach bei http://www.javalobby.com anmelden (keine Verpflichtungen).
Dann bekommst du den Mai-Stand von Bill Dudneys auch für Anfänger geeignetes, reichlich bebildertes und gut geschriebenes EClipse Ebbooks umsonst als 10 MB download.

Gruß Acel

Offline qojote

  • Aktives Mitglied
  • ***
  • Beiträge: 229
  • I love YaBB 1G - SP1!
Re:Frage zu classpath , path etc
« Antwort #5 am: 09.08.04 - 10:11:23 »
Okay,

vielen Dank.
Ich schau mir das heute abend mal in Eclipse an.
Ich hab mich jetzt mal bei www.javalobby.com angemeldet kann das Buch aber nicht finden.
Habs schon mit der Suche probiert bekomm aber keinen Hit.
Kannst du meiner Blindheit auf die Sprünge helfen ?

Gruß
qojote

Offline qojote

  • Aktives Mitglied
  • ***
  • Beiträge: 229
  • I love YaBB 1G - SP1!
Re:Frage zu classpath , path etc
« Antwort #6 am: 09.08.04 - 23:05:23 »
Hi,
ich hab grad mal deinen Rat befolgt und hab den Client nochmal in Eclipse reingeladen und getestet un siehe da in Eclipse geht er ohne Fehlermeldung.
Ist erst mal schön trotzdem hätte ich schon gerne gewußt woraus der Fehler resultiert. Ich werd auf jeden mal nochmal versuchen heraus zufinden warum es da einen Fehler gibt.


Gruß
Qojote

Marinero Atlántico

  • Gast
Re:Frage zu classpath , path etc
« Antwort #7 am: 10.08.04 - 16:13:55 »

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz