Pfad der eigenen Webapplikation auslesen

Kamikatze

Captain
Registriert
Okt. 2004
Beiträge
3.703
Hey Guys...

Gibt es irgendeine Möglichkeit, einfach und zuverlässig den Dateipfad der eigenen Tomcat-Webapplikation auszulesen?

Zur Info: Das Webapplikations-Verzeichnis liegt im webapps-Ordner der lokalen Tomcat-Installation.

Danke!
 
Ich hab eine Lösung gefunden, sicher nicht ganz sauber, aber eine andere fällt mir nicht ein:


Öffnet man eine Datei mit z.B.
Code:
FileWriter fw = new FileWriter("dummy.dum");
fw.close();

Wird diese standardmäßig unter
Code:
...\Tomcat...\bin\dummy.dum
abgelegt.


Da ich den Pfad
Code:
...\Tomcat...\webapps\AECP\

(mein Projektname, den weiß ich selbst) benötige, gelange ich an diesen mit folgendem Befehl:
Code:
new File(new File(new File("dummy").getAbsolutePath()).getParent()).getParent() + "/webapps/AECP/"

oder einfacher verständlich...
Code:
String s1 = new File("dummy").getAbsolutePath();
String s2 = new File(s1).getParent();
String s3 = new File(s2).getParent();
String path = s3 + "/webapps/AECP/";


Der Pfad sieht dann zwar unter Windows z.B. so aus:
Code:
C:\Programme\Apache Software Foundation\Tomcat 5.5/webapps/AECP/
... Java geht damit aber korrekt um.


Für bessere Lösungsvorschläge bin ich weiterhin zu haben.
 
Einfach die Umgebungsvariable CATALINA_HOME auslesen...

greetings, Keita
 
Wie mach ich das am besten, ohne zwischen den verschiedenen Betriebssystemen unterscheiden zu müssen?

Hab mich bereits mit dem ProcessBuilder beschäftigt... damit könnte ich die Shell aufrufen und die Umgebungsvariablen auslesen... nur bin ich dann nicht mehr plattformunabhängig.
 
Was bekommst du denn beim Aufruf von
Code:
System.getenv("CATALINA_HOME");
zurück?

greetings, Keita
 
Danke, das würde schon mal super funktionieren! Hab ich auch gerade ausprobiert und hat auch funktioniert... nuuur...

Ich glaube diese Variable damals, vor langer Zeit, eben für diesen Zweck manuell gesetzt zu haben, weil sie nicht automatisch gesetzt wurde.

Hab jetzt mal schnell den Tomcat deinstalliert und die Variable gelöscht, die neueste Tomcat-Version heruntergeladen und installiert... und siehe da - die Variable ist nicht vorhanden.

Das ganze ist nämlich ziemlich blöd, wenn ich mich nicht darauf verlassen kann. :(

Warum wird die Variable nicht automatisch gesetzt bzw. was läuft da schief?


EDIT:
Ich könnt ja ganz einfach auch die Variable setzen, wenn sie nicht gesetzt ist!

Also wenn sie nicht gesetzt ist, den Pfad vom User eingeben lassen, dabei den Pfad vorschlagen, den ich mit der anderen Methode bekomme. Gibt's dafür auch so eine einfache Methode (zum Setzen von Umgebungsvariablen)?
 
Zuletzt bearbeitet:
IIRC werden die Umgebungsvariablen nicht automatisch bei der Installation gesetzt, d.h. du mußt sicherstellen, daß CATALINA_HOME und andere Umgebungsvariablen (u.a. JAVA_HOME) gesetzt sind.

greetings, Keita
 
Okay, vielen Dank trotzdem, warst mir eine Hilfe... warum nicht gleich? :D

Umgebungsvariablen aus Java-Programmen heraus zu setzen scheint nicht direkt zu funktionieren (eben nur der Umweg über die Shell).

Ich werd jetzt einfach die Variable abfragen, und wenn es die nicht gibt die andere Methode anwenden.

Thx :)


EDIT:
Ganz eigenartig...

Code:
C:\>set CATALINA_HOME
Die Umgebungsvariable "CATALINA_HOME" ist nicht definiert.

Code:
ret = System.getenv("CATALINA_HOME");

Ergebnis der Netbeans-Watch für "ret":
Code:
"C:\\Programme\\Apache Software Foundation\\Tomcat 5.5"


Erkennt Java das trotzdem richtig oder wie?! :freak:


EDIT 2:
Die Implementierung ist wirklich nicht ganz sauber - wie befürchtet.
Beim Start ohne Netbeans werden neue Dateien nämlich nicht im Bin-Verzeichnis, sondern direkt im Tomcat-Verzeichnis angelegt. Damit stimmt dann der ermittelte Projektpfad nicht mehr. Ich werde wohl den User dazu auffordern die Systemvariable zu setzen, falls dies nicht getan ist.
 
Zuletzt bearbeitet:
Zurück
Oben