Klassenlader

oraclin25

Erfahrenes Mitglied
Hallo zusammen,

gestern habe ich meine Tests jeweils über Maven und über Eclipse ausgführt:
1. Eclipse --> ClassNotFoundException
2. Maven --> Alles gut

Ich habe mir deswegen ein bisschen Gedanken gemacht bzgl. Classloading. Hiermit bitte ich Euch um eine Verifizierung, ob mein grobes Verständnis richtig ist:

1. Bei Ausführung vom Programm in Eclipse wird Eclipse-Classloader genutzt. In Maven entsprechend Maven-Classloader. Es sind also in dem Fall 2 unterschiedliche Classloader-Implementierungen. Das ist auch der Grund, warum es mal mit Maven Klassen nicht gefunden werden, unter Eclipse hingegen schon. Oder andersrum.

2. Wenn man ein Programm via Oracle-JDK-Tool, also ganz schlicht mit "java -jar ratna.jarr" dann wird wieder ein anderer Classloader verwendet, nämlich der Classloader, der in JRE sich befindet.

Mir ist klar, dass natürlich diese unterschiedlichen Classloader-Implementierungen nicht in einer Isolation zu betrachten sind, da sie ja beispielsweise mit dem Bootstrap-Classloader kommunizieren, der in JVM(mit C geschrieben) sich befindet.

Mir gehts um die Frage, ob es wirklich unterschiedliche Classloader-Implementierungen gibt.

Ich fand leider keine zufriendenstellende Antwort zu meiner Frage. Die meisten Beiträge bzgl. Classloader stopfen einem meistens mit einem Haufen von Details (Bootstrap, Ext, System).

Vielen Dank für Eure Kommentare.

Viele Grüße aus Rheinland,

Eure Ratna
 
Zurück