# Classpath Servletcontainer



## reibi (16. Feb 2014)

Hi

Wie finde ich den Classpath eines Servletcontainers wie Tomcat raus?

unter der normalen JVM geht das so:



```
System.getProperty("java.class.path");
```

Danke und Gruß


----------



## KSG9|sebastian (16. Feb 2014)

In der Doku stehen die verschiedenen Classloader beschrieben. Im Prinzip solltest du nur Web-inf/lib innerhalb deiner Anwendung nutzen.


----------



## reibi (16. Feb 2014)

WebInf/lib.. nutzen
Genau so siehts aus!

Wie komm ich denn da mal schön relativ drauf?


----------



## reibi (16. Feb 2014)

Kann mir der Classloader eine Liste von Jarfiles und verzichnissen wiedergeben?
Ich denke nicht?!


----------



## KSG9|sebastian (16. Feb 2014)

Hä? Warum willst du das? Über ServletContext.getRealPath...aber wozu?


----------



## reibi (16. Feb 2014)

KSG9|sebastian hat gesagt.:


> Hä? Warum willst du das?


Zu kopliziert zu erklären - ergibt sich aber vielleicht aus dem Zusammenhang unten-->




KSG9|sebastian hat gesagt.:


> Über ServletContext.getRealPath



ServeletContext ist leider nicht statisch:
Auf das richtige Servlet komm ich leider nicht weil das über evigkeiten vererbt wird. Also komm ich auch nicht auf den Servletcontext.

Falls doch bräuchte ich ehz noch einen virtuellen Pfad.

java.lang.String 	getRealPath(java.lang.String path)
          Gets the real path corresponding to the given virtual path.


Aber ich will doch nur den Classpath und zwar komplett für die WebAPP


Wozu:
Classpaths sind nicht hirarchisch, also ich kann den Inhalt auch nicht auflisten, genau das will ich aber, also muss ich wissen um welches jar oder dir es sich handelt dann kann ichs durchprüfen.

Das finde ich im Classpath.


gruß


----------



## KSG9|sebastian (16. Feb 2014)

Urgh erklär doch mal die Anforderung! Was heißt "ewig vererbt"? Über Spring? Classloader sind hierarchisch...


----------



## reibi (16. Feb 2014)

KSG9|sebastian hat gesagt.:


> Was heißt "ewig vererbt"? Über Spring?


Nee!

Ich hab eine Klasse die heisst DeamonServlet, das macht ein Servlet im Speziellen erbt aber leider NICHT die Eigenschaften von Servlet. deshalb komm ich auch leider nicht an den Servletcontext.
Auf das ding komm ich nicht drauf, weil das n icht von mir ist.



KSG9|sebastian hat gesagt.:


> ? Classloader sind hierarchisch...


Klar!
Aber Classpaths leider nicht!

Man kann zB nicht rausfinden welche Klassen unter java.lang rumliegen
Das geht nur wenn man de Klassenpfad abgeht und in die Jars oder Verzeichnisse selber kuckt.


----------



## KSG9|sebastian (16. Feb 2014)

Ja, was aber ziemlich kaputt ist ...du hast immer noch nkcht erklärt was dein Problem ist. Vielleicht gibt's ja ne einfachere/bessere Lösung?


----------



## JavaMeister (16. Feb 2014)

```
Das geht nur wenn man de Klassenpfad abgeht und in die Jars oder Verzeichnisse selber kuckt.
```

Nein dafür gibt es eine Biblothek, die das macht.

Außerdem kann man einfach alle geladenen Klassen durchgehen und dann den packetnamen spliten und in ein Treestucktur rein legen, dann hat man das.

JAR Dateien durchgehen nach klassen macht auf keinen Fall sinn.


----------



## reibi (16. Feb 2014)

nee - warscheinlich keine Einfachere Lösung - Grundsätzlich will ich n hierarchisierten Classpath

Kaputt ist das shcon - auf jeden Fall!
Aber nicht anders zu machen, im Endefekt gehts ja nur um Verzeichnisse und Jarfiles, wenn man die alle hat, dann geht man die einfach nacheinander ab

Bei JVM kann ich das ja leicht machen indem ich den CP duch ne SYstemvariable bekomme
Bei ner Servletengine is mir das nich bekannt.

Aber irgendwie muss die ja auch Ihren Classpath kennen
Wenn man da nur rankäme

Danke fürs mitüberlegen


----------



## JavaMeister (16. Feb 2014)

Nein, der Tomcat läd auch Jars und wars, die nicht im expliziten Classpath liegen.


----------



## reibi (16. Feb 2014)

JavaMeister hat gesagt.:


> Nein, der Tomcat läd auch Jars und wars, die nicht im expliziten Classpath liegen.



Kommt man an diese Info ran?
Was alles geladen ist


----------

