![]() |
| | Themen-Optionen |
| | Nach oben #1 |
| Benutzer Registriert seit: 05.12.2005
Beiträge: 62
|
Hallo zusammen, ich habe bisher erfolgreich per Class.forName(String className) eine Klasse laden können. Allerdings ist der Klassenname ja etwas anderes als der Pfad zur entsprechenden class-Datei, da der Klassenname ja aus der Pakethierarchie kommt also z. B. pa.ket.hier.archie.Klasse. Da ich nun nicht davon ausgehen kann, dass der Klassenpfad (in der Pakethierarchie) dem relativen Pfad (im Dateisystem) entspricht, suche ich eine Möglichkeit, eine Klasse zu laden, indem ich quasi den Pfad zur class-Datei angebe, ungeachtet dessen, in welchem Paket sich diese Klasse vielleicht befindet. Kennt da jemand eine Möglichkeit? in der API der Klasse Class ist IMO ja auch nur die Möglichkeit per Klassenname, nicht aber per Dateiname gegeben. Und googlen nach Stichworten "java class filename" ist net besonders hilfreich... Thx in advance sayang |
| | |
| | Nach oben #2 |
| Projektleiter Registriert seit: 30.11.2005 Ort: Bottrop
Beiträge: 1.108
|
Du musst Class.forName() mit dem "fully qualified classname" füttern. Bsp.: java Code:
|
| | |
| | Nach oben #3 |
| Benutzer Registriert seit: 05.12.2005
Beiträge: 62
|
Hmmm, offensichtlich hab ich mich falsch/schlecht ausgedrückt. Das Laden der Klasse mit Class.forName hab ich bereits hinbekommen, ist ja auch kein Ding. Was ich erreichen will: Ich schreibe ein Programm, bei dem man zur Laufzeit einen bestimmten Algorithmus (dessen Klasse dann mit forName geladen wird) festlegen kann, der zur Berechnung der Daten verwendet werden soll. Nun habe ich ein paar solcher Algorithmen im System drin, diese implementieren alle eine bestimmte Schnittstelle, und das funktioniert auch alles wunderbar. Ich möchte nun aber so eine Art plugin-Möglichkeit geben. Dazu gibt es im Projektordner ein weiteres Verzeichnis namens "plugins". Es soll der Third party möglich sein, weitere Class-Files bzw. Klassen, die die oben erwähnte Schnittstelle implementieren, in dieses plugins-Verzeichnis zu speichern und mein Programm handelt das automatisch. Allerdings wird mein Programm dann evtl. in Form einer Jar-Datei vorliegen. Wie bekomme ich es nun genau hin, dass mein Programm auch in diesem Ordner nach Klassen sucht und diese auch lädt. Ist ja möglich, dass diese Plugin-Klassen Teil eines anderen Packages sind, oder irre ich mich da? Ich hoffe ich hab nun etwas besser erklärt, worum es mir geht. Vielen Dank für eure Tipps... sayang |
| | |
| | Nach oben #4 |
| Sesselkleber Registriert seit: 17.01.2005
Beiträge: 575
|
Also was du eigentlich möchtest: Dateien dynamisch in den Classpath aufnehmen. Am besten steckst du die Plugins in eine Jar-Datei. Hier kannst du nachlesen wie du zum Beispiel Datenbanktreiber nachträglich in den Classpath einbaust. Daraus resultierend sollte das funktionieren: Java Code:
|
| | |
| | Nach oben #5 |
| Projektleiter Registriert seit: 30.11.2005 Ort: Bottrop
Beiträge: 1.108
|
Sorry, hab dich falsch verstanden... beim zweiten mal lesen ist mir das dann auch aufgefallen. Wenn du den ganzen Kram nicht selbst schreiben möchtest und etwas größeres für die Plugins brauchst, würde ich dir die "Platonos Pluginengine" empfehlen... frag mich aber bitte nicht, wo du die herbekommst... ich weiß, dass ich den Link in meinen Favoriten hatte, aber ich find ihn nicht mehr... Sourceforge müsste es gewesen sein. |
| | |
| | Nach oben #6 |
| Benutzer Registriert seit: 05.12.2005
Beiträge: 62
|
Hi, vielen Dank für die Tipps pago & sparrow. Habe mich für den URLClassLoader entschieden, da das mit den Plugins jetzt nicht so gewaltig wird, dass ich dafür ne extra PluginEngine bräuchte. Das mit dem URLClassLoader hat aber auch wunderbar funktioniert. Nur hab ichs auf ein Verzeichnis angewendet, in dem class-Dateien drin sind, nicht direkt auf ein jar, aber das könnte man ja zusätzlich auch noch einbauen... Vielen Dank nochmal sayang |
| | |
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Classen dynamisch laden | dtdesign | PHP-Programmierung | 6 | 10.07.2006 17:21 |
| Klasse laden | Xean | Allgemeine Java-Programmierung | 13 | 01.07.2006 15:48 |
| Klasse aus Jar laden | Xean | Allgemeine Java-Programmierung | 1 | 13.06.2006 16:04 |
| Wert Varible in Listener anderer Klasse nutzen??? | risa | Desktop-Applikationen und Grafik | 1 | 03.04.2006 07:36 |
| [PHP] Wie übergebe ich Daten per URL? | Ben | Tutorials | 0 | 05.12.2004 14:36 |