ClassLoader und Zugriff auf unbekannte Klassen

Status
Nicht offen für weitere Antworten.

thomas.g

Bekanntes Mitglied
Hi,

Ich habe nun nach der Modularisierung meines Programmes das Problem, dass ich Klassen beim Starten meines Programmes laden muss/kann.

Das Problem ist folgendes: Ich habe in einem speziellen Konfig-Verzeichnis .class oder .jar Dateien mit Erweiterungen für mein Programm. Nun soll mein Programm mithilfe eines URLClassLoaders diese Extra-Module laden können.

Die Schwierigkeite dabei: Ich müsste irgendwie feststellen können auf welche Klassen der ClassLoader Zugriff hat damit ich jede einzelne durchprüfen kann, ob es ein Modul für mein Programm ist und es somit geladen werden kann.

Auf diese Art und Weise vermeide ich eine Registry da sonst die zusätzlichen Module registriert werden müssten doch nach dem mein Programm auf dem prinzip "dynamisch" erweiterbar basiert, ist die Lösung mit einer Registry eher nicht interessant.

Ganz super wäre, wenn ich irgendwie dem ClassLoader sagen könnte: "Lade alle Klassen vom Typ XYZ und gib sie mir als Array zurück".

Falls sich wer nicht vorstellen kann was ich meine: Es geht bei diesem Problem um Visualisierungen für meinen MediaPlayer und diversen anderen Modulen die geladen werden müssten. Allerdings weiß man bei Erweiterungen ja nicht, wie die Klasse genau heißt, ich weiß lediglich dass alle Module von "Visualisierung" abgeleitet sind.

Hätte wer einen Lösungsvorschlag? Ich komm auf keine brauchbare Lösung. :bahnhof:
 

MPW

Top Contributor
Also:

- URLClassloader -> du hast ein Class-Objekt
- getSuperClass() -> solange, bis du bei Objekt oder deiner gewuenschten Klasse angekommen bist
 

thomas.g

Bekanntes Mitglied
aha, und mit getSuperClass(); kann ich also alle Klassen auslesen, auf die der Klassloader Zugriff hat?
Der Methodenname sagt mir eher, dass ich damit Zugriff auf die Klasse "Visualisierung" und nicht Zugriff auf eine abgeleitete Klasse erhalte. Oder sehe ich das falsch?
 

MPW

Top Contributor
Also, das mit SuperClass hast schon recht, aber du hast meinen Loesungsansatz nicht verstanden...okay war wahrscheinlich ein bisschen zu knapp formuliert:

Davon ausgehend, dass du weisst, in welchem Ordner die "Module"/"Erweiterungen" liegen, laedst du erst einfach mal alle, und pruefst dann mit SuperClass, ob sie eine gueltige Erweiterung ist.
 

thomas.g

Bekanntes Mitglied
Das ist mir schon klar, nur das Problem liegt ja genau beim Laden aller Klassen. Wie weiß ich z.B. welche abgeleitete Klassen in einer .jar Datei sind?

Ich kann ja Klassen mit einem URLClassLoader nur laden, wenn ich den Namen/Package kenne. Z.B. hat jemand eine Klasse mit dem Namen "CooleVisualisierung" welche von meiner Klasse "Visualisierung" abgeleitet ist erstellt und in mein Verzeichnis kopiert. Mein Programm kennt aber die Klasse "CooleVisualisierung" nicht weil das ja ein Name von einer Klasse ist die ein anderer Programmierer geschrieben hat.

Wären nur .class Dateien in meinem Verzeichnis so könnte ich sagen: Klassenname = Dateiname-".class" Erweiterung.
Diesen Klassennamen übergeb ich dann dem URLClassLoader und schwuptiwup hab ich die Class bzw. ein Objekt dazu.

Schwieriger wirds allerdings bei Klasse in .jar Dateien. Hierfür wäre es gut wenn der ClassLoader eine Methode hätte: "getAllAccessibleClasses" doch nachdem es diese nicht gibt müsste ich ne andere schnelle Lösung finden.

thx, thomas
 

MPW

Top Contributor
Also bei Modularisierung ist es ja allgemein ueblich, die Klassen in einen bestimmten Ordner zu legen.
Das irgendwo verstreut zu machen, macht keinen Sinn....und waere auch zu viel Aufwand.

Das was du suchst gibt es so nicht, da musst du schon rekursiv suchen;-).
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Classpath Zur Laufzeit bestimmte Klassen in Classloader hinzufügen? Allgemeine Java-Themen 4
L Eigenener ClassLoader wirft java.lang.NoClassDefFoundError Allgemeine Java-Themen 0
D Classloader ohne Package Allgemeine Java-Themen 10
N Klasse via ClassLoader laden Allgemeine Java-Themen 2
D ClassLoader für Variablen einer Klasse setzen Allgemeine Java-Themen 24
K [Refactoring] ClassLoader Verzeichnis durchsuchen lassen Allgemeine Java-Themen 7
schlingel Webstart/Applet Problem - Classloader-Bug Allgemeine Java-Themen 7
M Security Manager für bestimmte Klassen/Classloader? Allgemeine Java-Themen 3
hdi ClassLoader / Constructor Call intern Allgemeine Java-Themen 11
C inteface not visible from classloader Allgemeine Java-Themen 2
M jdbc treiber (h2) mit eigenem ClassLoader laden Allgemeine Java-Themen 4
B Eigener ClassLoader Allgemeine Java-Themen 9
MQue ClassLoader Pfad ausgeben Allgemeine Java-Themen 6
S Problem mit ClassLoader.getSystemResource !! Allgemeine Java-Themen 3
V Image laden - URL über ClassLoader ermitteln Allgemeine Java-Themen 2
J Eigener ClassLoader wird nicht immer verwendet Allgemeine Java-Themen 3
E Wieder mal der Classloader Allgemeine Java-Themen 6
F ClassLoader und "Cache" Allgemeine Java-Themen 2
MQue ClassLoader Allgemeine Java-Themen 5
N ClassLoader - Laden von Bytecode aus einer Datenbank Allgemeine Java-Themen 6
P Klasse über eigenen Classloader laden: SecurityException Allgemeine Java-Themen 11
N Classpath mit ClassLoader künstlich erweitern Allgemeine Java-Themen 2
P System.getProperty zu Classloader Allgemeine Java-Themen 21
G Classloader Problem Allgemeine Java-Themen 10
M Bibliotheksname zur Laufzeit ermitteln (Classloader) Allgemeine Java-Themen 7
MQue ClassLoader Allgemeine Java-Themen 18
G Problem mit URL classloader Allgemeine Java-Themen 10
S classloader + jar + resourcen in dem jar Allgemeine Java-Themen 4
F mit classloader klassen ausserhalb *.jar einlesen Allgemeine Java-Themen 4
G Font mittels ClassLoader in .jar wirft NotFoundException Allgemeine Java-Themen 10
P Kompilerfehler: at java.lang.ClassLoader.loadClassInternal(U Allgemeine Java-Themen 16
C ClassLoader - dymisches Laden von JDBC Drivers Allgemeine Java-Themen 3
R Problem mit Classloader Allgemeine Java-Themen 2
D Programm mit eigenem ClassLoader funktioniert nicht Allgemeine Java-Themen 12
K Problem mit ClassLoader - Laden von Resourcen aus Jar's Allgemeine Java-Themen 14
C Problem mit ClassLoader Allgemeine Java-Themen 2
T Brauche Hilfe bei ClassLoader Allgemeine Java-Themen 2
G cachender ClassLoader u.v.m. Allgemeine Java-Themen 5
G ClassLoader Allgemeine Java-Themen 3
R ClassLoader funktioniert in Verbindung mit JAR-Datei nicht Allgemeine Java-Themen 8
LucasGlockner Effizienter byte-Zugriff auf ein long[]-Array Allgemeine Java-Themen 8
W Klassen Zugriff auf ein Textfile aus allen Klassen. Allgemeine Java-Themen 2
izoards Zugriff auf gemeinsame Ressource (CSV-File) Allgemeine Java-Themen 3
S Java Zugriff auf Netzwerklaufwerk Allgemeine Java-Themen 1
sascha-sphw Java 9 module Zugriff auf eine resource einer anderen JAR Allgemeine Java-Themen 0
KeexZDeveoper Zugriff auf Methoden vom Server Allgemeine Java-Themen 7
O Zugriff auf mySQL ohne JDBC Allgemeine Java-Themen 3
P Element einer Liste wurde hinzugefügt, aber es gibt keinen Zugriff Allgemeine Java-Themen 2
B Maven Zugriff auf files aus einem kompilierten jar Allgemeine Java-Themen 15
S Zugriff auf jUnit Test Suite Runner-Instanzen innerhalb von Test Classes Allgemeine Java-Themen 7
W Zugriff auf Objektvariablen vs. Übergabe Allgemeine Java-Themen 3
J Zugriff auf erstellte Objekte einer Klasse von einer Klasse ausserhalb Allgemeine Java-Themen 3
Tommy Nightmare HTTP Zugriff auf Internetseite im Loginbereich Allgemeine Java-Themen 5
H Zugriff auf PHP Allgemeine Java-Themen 4
B DB-Zugriff einer Webanwendung funktioniert nicht mit Java 7 Allgemeine Java-Themen 2
M WebService - Zugriff auf Webservice Methode über Browser Allgemeine Java-Themen 1
O JNA Zugriff auf Funktion aus DLL Allgemeine Java-Themen 0
O Zugriff auf Windows Zertifikatstore Allgemeine Java-Themen 2
M Kein Zugriff auf microSD Karten Allgemeine Java-Themen 4
T Zugriff auf Datenbank Allgemeine Java-Themen 1
J Zugriff auf IMAP GMail Konto scheitert. Allgemeine Java-Themen 2
P Frontend- Zugriff auf WS- Backend Allgemeine Java-Themen 0
U Zugriff auf Datei sperren Allgemeine Java-Themen 5
N Best Practice Semi-Synchronized Zugriff Allgemeine Java-Themen 0
C Zugriff auf Event felder Allgemeine Java-Themen 0
M Threads synchroner Zugriff (add/delete/read) auf eine Liste Allgemeine Java-Themen 6
F Zugriff Verweigert bei Kopieroperation? Allgemeine Java-Themen 4
T JNI: kein Zugriff auf VM in Callback-Methode eines Windows-Hooks Allgemeine Java-Themen 3
S Dynamischer Zugriff Allgemeine Java-Themen 4
Minonos Einem Programm Zugriff auf bestimmte Ordner geben Allgemeine Java-Themen 5
E Zugriff auf Dateien im Filesystem überwachen Allgemeine Java-Themen 5
H Programierstil: static - Zugriff vs. Staticzugriff Allgemeine Java-Themen 24
V Zugriff auf den Objekterzeuger? Allgemeine Java-Themen 4
M Zugriff zweier Threads auf diesselbe Methode Allgemeine Java-Themen 16
B Zugriff auf eine HashMap Allgemeine Java-Themen 4
B JApplet Zugriff auf Local Storage des Browser? Allgemeine Java-Themen 2
D Zugriff auf Array-Liste Allgemeine Java-Themen 19
M gleichzeitiger Zugriff auf eine Textdatei Allgemeine Java-Themen 6
D Eclipse Kein Zugriff auf Inhalt einer referenzierten .jar Allgemeine Java-Themen 5
B synchronisierter zugriff auf Objekt Allgemeine Java-Themen 6
nutellastulle Zugriff, Übergabe, Bearbeitung und Ausgabe von Jlist Allgemeine Java-Themen 6
U Große Liste von Strings mit indiziertem Zugriff Allgemeine Java-Themen 31
J XML Element Zugriff Allgemeine Java-Themen 4
P Daten kopieren mit nio - Zugriff verweigert Allgemeine Java-Themen 8
M Klassen Zugriff auf getMethode ohne Klasse zu erzeugen Allgemeine Java-Themen 6
A Input/Output Applet-Zugriff auf PHP-Schnittstelle (externer Server) Allgemeine Java-Themen 22
H Vererbung Abgeleitete Klassen und Zugriff Allgemeine Java-Themen 2
C Probleme mit dem Zugriff auf private Methode per reflection Allgemeine Java-Themen 2
J Zugriff auf Poker-Client Fenster Allgemeine Java-Themen 14
C Zugriff auf private Methode per reflection geht nicht mehr Allgemeine Java-Themen 3
S Zugriff auf innere Klasse Allgemeine Java-Themen 3
D Kein Zugriff auf WebService ausser localhost Allgemeine Java-Themen 4
Sonecc Zugriff auf Class File einer anderen Jar während der Laufzeit Allgemeine Java-Themen 2
J Zugriff auf Dateien auf einem shared Folder? Allgemeine Java-Themen 3
H Zugriff auf VBA in Java Allgemeine Java-Themen 2
Haave Audio Device Unavailable: Kein gleichzeitiger Zugriff auf Soundsystem möglich Allgemeine Java-Themen 7
G Letzter Zugriff auf Datei Allgemeine Java-Themen 5
C java.io.FileNotFoundException: (Zugriff verweigert) Allgemeine Java-Themen 14
O Zugriff auf Serielle Schnittstelle - Keine Ports gefunden. Allgemeine Java-Themen 8
C Webstart: Zugriff auf lokale Dateien? Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben