Classloader Hierarchie

Status
Nicht offen für weitere Antworten.

gistolero

Mitglied
Hallo,

Nachdem ich meine ersten Hello-World Versionen hinter mich gebracht habe, moechte ich jetzt eine Java Applikation schreiben, in die ich externe Bibliotheken einbinde. Leider endet das bisher immer mit NoClassDefFoundError etc. Fehlern. Soweit ich mich in das Thema eingearbeitet habe, findet der Classloader wohl meine externen Klassen nicht.

Um zu verstehen, was genau im Java Hintergrund ablaeuft, wuerde ich mir gerne in meinem Programm alle involvierten Classloader und alle dazu gehoerigen Parent Classloader ausgeben lassen. Ziel ist es, alle betroffenen Classloader bis zum Root hierarisch anzuzeigen und wenn moeglich auch noch die Verzeichnisse und JAR Dateien, die von ihnen verarbeitet werden. Wie mache ich das?

Vielen Dank fuer Eure Hilfe
Simon
 
M

maki

Gast
Bevor du dich auf ClasLoader stürzt: Den Classpath hast du verstanden und richtig gesetzt?
 

gistolero

Mitglied
maki hat gesagt.:
Bevor du dich auf ClasLoader stürzt: Den Classpath hast du verstanden und richtig gesetzt?

Ja, glaube ich zumindest :) Ich habe die gaengigen Classpath und Classloader Dokumentationen gelesen und in der Theorie auch verstanden. In meinen Testprogrammen habe ich in -classpath bzw. $CLASSPATH alle externen Klassen eingetragen, trotzdem werden sie teilweise nicht gefunden. Ich gehe deshalb davon aus, dass die verschiedenen Classloader nicht richtig zusammenarbeiten.

Es geht mir hier nicht um die Loesung eines speziellen Problems (deshalb habe ich auch keinen Code gepostet), sondern ich moechte den Mechanismus verstehen und bei jedem Programm in der Lage sein, meine Classpath und Classloader Einstellungen ausgeben und kontrollieren zu koennen.
 

diggaa1984

Top Contributor
ich würd auch denken das du mit Classloadern hier mit Kanonen auf Spatzen schiesst .. oder hast dir selbst einen geschrieben und eingebunden, was ich aber bezweifel, wenn das gleich nach "Hello World" kommt *g*

Denke mal irgendwo hast noch n Dreher im Classpath oder Artverwandtem
 
G

Guest

Gast
gistolero hat gesagt.:
alle externen Klassen eingetragen

Hast du dort wirklich Klassen eingetragen? Normalerweise liegen externe Bibliotheken als jar-Dateien vor. Nur diese musste du im Clathpath angeben.

Wenn du wirklich Klassen einbinden willst, so musst du auf das Wurzelverzeichnis deiner package-Struktur verweisen und nicht auf die Klassen selbst.
 
G

Guest

Gast
Anonymous hat gesagt.:
Hast du dort wirklich Klassen eingetragen? Normalerweise liegen externe Bibliotheken als jar-Dateien vor. Nur diese musste du im Clathpath angeben.


Ich habe die jar-Dateien und die Verzeichnisse eingetragen, sollte also passen.

Wie gesagt, es geht mir auch mehr um das grundsaetzliche Verstaendnis. Wenn ich mich neu mit einem System oder einer Programmiersprache beschaeftige, versuche ich immer zunaechst ein paar Testprogramme zu schreiben, die mir helfen die Mechanismen im Hintergrund zu verstehen. Da ich bei meiner naechsten Applikation auf viele externe Bibliotheken zugreifen moechte, brauche ich einen Ueberblick ueber die Classloader/Classpath Thematik.
 

Atze

Top Contributor
vielleicht hilft dir das:

wiki.jboss.org/wiki/_Files/WebappClassLoader/j-classloader-ltr.pdf
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben