Angenommen, es gibt zwei ähnliche Klassenlader, MyClassLoader1 und MyClassLoader2, die beide den Bytecode von MyCoolClass in derselben Quelle finden können. Falls eine Anwendung mithilfe der beiden Klassenlader zwei Instanzen von MyCoolClass unabhängig voneinander lädt (also etwa coolClass1 durch MyClassLoader1 und coolClass2 durch MyClassLoader2), wird MyCoolClass.class dafür ebenfalls unabhängig definiert. Wird dann der folgenden Code ausgeführt, erhält man die Fehlermeldung ClassCastException:
MyCoolClass coolClass1 = (MyCoolClass)coolClass2;
Diesem Ausnahmefehler werden jene Entwickler häufig begegnen, die den Mechanismus zum Laden von Klassen nicht richtig verstanden haben. Da die beiden Klassen von unterschiedlichen Klassenladern definiert wurden, registriert die JVM zwei unterschiedliche Klassentypen. Die Variablen coolClass1 und coolClass2 sind nicht typkompatibel, obwohl sie denselben Klassentyp haben und von derselben Quelle geladen wurden.
Egal ob findClass() oder loadClass() außer Kraft gesetzt werden, mit der Methode getSystemClassLoader() hat man direkten Zugriff auf den System-Klassenlader in Form eines echten ClassLoader-Objekts. Mit dem Aufruf findSystemClass(String name) lässt sich ebenfalls darauf zugreifen. Die Methode getParent() liefert den übergeordneten Klassenlader. Listing A beinhaltet das Beispiel eines einsatzfertigen, selbst geschriebenen Klassenladers.
Listing A
Zusammenfassung
Wer den Mechanismus des Ladens von Klassen richtig versteht, kann sich langfristig viel Ärger mit dem Debuggen von ClassNotFound– oder ClassCastException-Fehlern in einer Anwendung ersparen. Das ist besonders wichtig, wenn eine Anwendung innerhalb eines Anwendungsservers eines Drittanbieters läuft. Denn solche Anwendungsserver verwenden häufig proprietäre und spezifisch konzipierte Klassenlader.
Das KI-Werkzeug "BAIOSPHERE KI-KOMPASS" soll Unternehmen den Einstieg in KI erleichtern.
Das Wachstum konzentriert sich wie im Vorjahr auf das zweite Halbjahr. Google dominiert bei den…
Sie ermöglichen eine Remotecodeausführung. Angreifbar sind Acrobat DC, 2024 und 2020 sowie Reader DC und…
Die öffentlich bekannte und bereits ausgenutzte Schwachstelle erlaubt eine Rechteausweitung. Betroffen sind alle unterstützten Versionen…
Der neue Quantenchip Willow löst eine Herausforderung, an der seit 30 Jahren gearbeitet wird. Google…
Es erstellt kurze Videoclips aus Textaufforderungen. Sora steht ab sofort Abonnenten von ChatGPT Plus und…