# classpath bei tomcat



## Scor (2. Feb 2007)

hmmm, also komme tatsaechlich mal wieder nicht weiter...

ich moechte, dass mein servlet mit dem applet kommuniziert und das applet ihm somit daten zum speichern uebermittelt.
habe es soweit fertig gestellt, dass das servlet das applet ohne probleme laedt.
die servlet dateien befinden sich unter /webapps/WEB-INF/src, die applet dateien unter /webapps/src
das applet aufzurufen ist fuer das servlet kein thema wie gesagt, liegt ja alles in kompilierter form vor.
ich habe es auch geschafft einen string vom applet zum servlet zu senden. bekannte objekte sind also kein thema. ein objekt einer selbstgeschriebenen klasse (ja, sie sind serialisierbar) lassen sich jedoch nicht uebermitteln:
classnotfoundexception...
es muss also am classpath liegen, da tomcat das verzeichnis webapps/src nicht kennt (fuer eclipse ist es natuerlich kein problem)

meine frage lautet nun: gibt es eine moeglichkeit dies zu umgehen, also den pfad webapps/src zum tomcat classpath hinzuzufuegen, oder muss ich bei jeder aenderung am applet alles in eine jar datei packen und ins WEB-INF/lib verzeichnis legen?
vielleicht weiss ja der ein oder andere crack weiter...
hoffe bald eine loesung zu finden..

danke an alle,
-scor-


----------



## Fats (2. Feb 2007)

Erste spontane Idee: hast Du schon mal den Tomcat neu gestartet? Der "frisst" so manche Klasse erst nach dem Neustart....

Nächster Punkt: heisst der "offizielle" Pfad nicht /mycontext/WEB-INF/classes/ ... ? src klingt etws merkwürdig ... vorallem: im Tomcat brauchst Du die compiliierten Klassen. Die haben als Endung nicht .java sondern .class 

Gruß
Fats


----------



## Scor (2. Feb 2007)

hallo und danke fuer deine schnelle antwort!

ja natuerlich. tomcat habe ich mittlerweile mehrmals neugestartet. daran wird es wohl nicht liegen.
wenn ich ein tomcat projekt erstelle (ich nutze ja das sysdeo plugin in eclipse) legt er automatisch den ordner "WEB-INF/src" als source ordner an. darin befindet sich dann classes. mir ist selbstverstaendlich bewusst, dass tomcat die .class dateien braucht. die wuerde ich in der notloesung ja auch ins .jar archive packen. ich hoffe aber dies umgehen zu koennen, in dem ich tomcat bekannt mache, wo sich meine applet struktur befindet.
knifflige angelegenheit...


----------



## Fats (2. Feb 2007)

Das Plugin kenne ich nicht ...  ???:L  Muß zugeben, ich hab auch noch nicht intensiver mit Applets gearbeitet. Aber irgendwie kommt es mir spanisch vor, daß Dein Ordner ../WEB-INF/src heißt. Ich würde einen neuen Class-Ordner anlegen. Die src haben auf dem Server eigentlich nix mehr zu suchen ...

Bei Netbeans gibt es zum einen die Src Ordner und zum anderen einen Build Ordner. Da liegt die ganze Struktur doppelt rum. Vielleicht gibts sowas auch bei eclipse?

Ein Gedanke kommt mir grade noch: Muß das Applet nicht im über das Web zugängigen Ordner liegen? der Web-Inf Ordner müsste doch gesperrt sein ... ist aber nur eine Vermutung ...

Fats


----------



## Scor (2. Feb 2007)

also wie gesagt hat das plugin den ordner so genannt. und ich sehe darin nichts verwerfliches. worein sollte ich denn die servlet klassen am besten legen?
das applet liegt uebrigens nicht im WEB-INF wie schon gesagt, sondern im hauptverzeichnis des projektes, wo die ganzen webspezifischen inhalte wie bilder, css und soundfiles liegen. und genau damit hat tomcat probleme.
diese klassen zu finden.


----------



## Fats (2. Feb 2007)

Scor hat gesagt.:
			
		

> also wie gesagt hat das plugin den ordner so genannt. und ich sehe darin nichts verwerfliches.


Nein, verwerflich ist dabei nichts, Du könntest den Ordner ja auch "007" nennen - und es würde auch nicht schlimmer werden :bae: 
Ich bin mir zwar nicht 100% sicher, aber was ich bisher mitbekommen habe, ist der "classes" Ordner im WEB-INF Ordner eine strukturelle Vorgabe, wie der WEB-INF Ordner selbst oder der META-INF ... Wenn der Tomcat nach Klassen sucht, dann schaut er nach dem "classes" Ordner im WEB-INF Ordner. Und wenn Du statt dessen den Ordner "src" nennst, dann kann er ihn nicht finden. Vielleicht kann man ihm das beigiegen, aber weiß nicht wie?!



> worein sollte ich denn die servlet klassen am besten legen?


Die müsste wohl in den class-path ... Normalerweise steckst Du Deine Klassen in sogenannte Packages. Entsprechend diesen Packages gibt es eine Pfad Struktur im Class-Path. Die Klassen von apache.org befinden sich im classes/org/apache/-Pfad, usw. Bei Deinen eigenen Klassen müsstest / kannst Du Dir was eigenes ausdenken zb: de.scor.test.



> das applet liegt uebrigens nicht im WEB-INF wie schon gesagt, sondern im hauptverzeichnis des projektes, wo die ganzen webspezifischen inhalte wie bilder, css und soundfiles liegen.


Ah, ok! Da hatte ich Dich falsch verstanden. Dann ist die Welt ja in Ordnung 



> und genau damit hat tomcat probleme. diese klassen zu finden.


hmm ... verdammt, hab mich leider nie näher mit Applets beschäftigt .... Dachte nur, wenn es fehlende Klassen sind, dann liegt das meist an genau diesem Class-Path....  ???:L 

Gruß
Fats


----------

