# richtige Pfadangabe für den Tomcat



## achimA (1. Apr 2007)

hallo,

ich verzweifle langsam.. an dem Tomcat. Habe eclipse, und möchte ein File einlesen. per Java klappt es auch ganz normal. 


```
LineNumberReader lineReader = new LineNumberReader(new FileReader(
				/*Pfandangabe geht in Java */"../Client/src/properties/user.txt"));
				"C:/Worspaces/Projekt/Client/src/properties/user.txt"));
```

also beide Pfadangaben gehen mit Java, aber wenn ich den Tomacat starte, und meine JSF Seite aufrufe, dann findet der Tomcat  die  relative Pfadangabe nicht!! .. 
was und wo muss ich denn nun das File speichern, so dass es aus dem Tomcat raus direkt gefunden wir? Ein Beispiel wäre ganz nett..

danke


----------



## HLX (2. Apr 2007)

Beim Ausführen der Anwendung niemals auf das Source-Verzeichnis zugreifen. Dieses existiert in deiner Laufzeitumgebung nicht, will heißen: beim Build wird das Verzeichnis nicht eingepackt. (wozu auch)

Alles was in "src" liegt wird (falls erforderlich) kompiliert und in WEB-INF/classes geschoben. Die Textdatei landet automatisch auch dort. Wenn du in Eclipse auf die 'Resource Perspective' wechselst wird du sie dort finden.

Normalerweise solltest du über 'properties/user.txt' an die Datei kommen. Da in Java vom 'classes'-Verzeichnis ausgegangen wird.


----------



## DP (2. Apr 2007)

*verschoben*


----------



## achimA (2. Apr 2007)

HLX hat gesagt.:
			
		

> Beim Ausführen der Anwendung niemals auf das Source-Verzeichnis zugreifen. Dieses existiert in deiner Laufzeitumgebung nicht, will heißen: beim Build wird das Verzeichnis nicht eingepackt. (wozu auch)
> 
> Alles was in "src" liegt wird (falls erforderlich) kompiliert und in WEB-INF/classes geschoben. Die Textdatei landet automatisch auch dort. Wenn du in Eclipse auf die 'Resource Perspective' wechselst wird du sie dort finden.
> 
> Normalerweise solltest du über 'properties/user.txt' an die Datei kommen. Da in Java vom 'classes'-Verzeichnis ausgegangen wird.



also bei mir in eclipse, da ist unter dem WEB-INF Ordner kein Ordner namens classes, dort gibt es nur den lib Ordner.
die classes sind bei mir unter Porjekt/build/classes.  Nun wollte ich auf die Datei zugreifen, und habe folgende Pfandangabe (wie oben) ("properties/user.txt") . Doch er findet es dann auch  nicht!.  Liegt es vielleicht daran weil ich es über eclipse starte? sollte ich es direkt über Tomcat starten, also als war Datei exportieren, und dann nochmal versuchen? Wäre aber blöd wenn es über eclipse niocht geht und direkt über Tomcat!...

was stimmt denn nun nicht?


----------



## HLX (3. Apr 2007)

Das "classes"-Verzeichnis siehst du nur in einer bestimmten Eclipse-Perspektive, und zwar die Perspektive "Resource". Such mal danach.

Ich vermute er findet die Datei nicht, weil der Ordner in dem sie liegt nicht im Classpath ist und damit relativ nicht erkannt wird. Lege die Textdatei mal direkt ins "src"-Verzeichnis. Dann landet sie auch direkt in "classes" (WEB-INF/classes/user.txt). Entferne den Pfad beim Zugriff. 

Alternativ sollte auch das src/META-INF-Verzeichnis funktionieren. Aber auch hier nicht im Pfad den Source-Ordner referenzieren. Der existiert zur Laufzeit nicht.


----------



## Guest (3. Apr 2007)

HLX hat gesagt.:
			
		

> Das "classes"-Verzeichnis siehst du nur in einer bestimmten Eclipse-Perspektive, und zwar die Perspektive "Resource". Such mal danach.
> 
> Ich vermute er findet die Datei nicht, weil der Ordner in dem sie liegt nicht im Classpath ist und damit relativ nicht erkannt wird. Lege die Textdatei mal direkt ins "src"-Verzeichnis. Dann landet sie auch direkt in "classes" (WEB-INF/classes/user.txt). Entferne den Pfad beim Zugriff.
> 
> Alternativ sollte auch das src/META-INF-Verzeichnis funktionieren. Aber auch hier nicht im Pfad den Source-Ordner referenzieren. Der existiert zur Laufzeit nicht.




hmm... komisch das es noch immer nicht klappt. vielleicht mal u´m Missverständnisse zu beseitigen:

So sieht meine Ordnerstruktur im JavaExplorer aus eclipe, (Dynamisches WebProjekt)

Porjektname
  |-src
  |   |- package
      |- properties
            |-user.txt

  |-Tomcat Libraries
  |-build
  |
  |-WebContent
         |-META-INF
              |-Manifest Datei
         |-WEB-INF
              |-lib
              |- faces-config.xml
              |- web.xml


so, ich habe also in dieser Ansicht unter WEB-INF oder META-INF weder ein src Ordner, sonst noch ein classes Ordner,
ja in der Resource Datei, da habe ich den classes Ordner. Dieser befindet sich unter /Projekt/build/classes  
innnerhalb des classes Ordners habe ich dann ein Ordner namens properties, welcher dann auch im src Ordner innerhalb der JavaExplorer Ansicht ist.

- ich habe glaub schon fast alles versucht: user.txt in WEB-INF, oder In die META-INF kopiert, dann mit 
("/user.txt") oder ("WEB-INF/user.txt") oder ("WEB-INF/classes/user.txt")  

.. es muss doch eine Lösung geben, oder mache ich es ganz falsch...?


----------



## HLX (4. Apr 2007)

Wie lautet der Exception-Stacktrace in der Tomcat-Konsole bzw. Log-Datei?


----------



## achimA (4. Apr 2007)

HLX hat gesagt.:
			
		

> Wie lautet der Exception-Stacktrace in der Tomcat-Konsole bzw. Log-Datei?



das System konnte den angegebenen Pfad nicht finden


----------



## HLX (5. Apr 2007)

Ich meinte eigentlich den kompletten Stacktrace.

Also: wenn Ressourcendateien einer Web-Anwendung im Ordner WEB-INF/classes liegen, sollten diese OHNE Pfadangabe über den Classpath erkannt werden.


----------

