Plugin-System

Status
Nicht offen für weitere Antworten.

MacMallow

Mitglied
Hallo zusammen!

Ich hoffe ich bin hier im richtigen Unterforum. Wenn nicht bitte einfach in das richtige verschieben. Nun aber gleich zum eigentlichen Thema.

Da ich in den nächsten Tagen die Entwicklung einer kleinen Anwendung, die durch Plugins erweitert werden kann, in Angriff nehmen möchte, wollte ich mich diesbezüglich mal etwas schlau machen. Die einzelnen Plugins sollen hierbei ein vorgegebenes Interface implementieren und als jar-Datei in einem Ordner (z.B. "lib) abgelegt werden. Die Anwendung selbst soll nun jede der jar-Dateien nach Implementierungen des Interfaces suchen und diese laden.

Ich habe nun schon auf mehreren Seiten gelesen, dass so ein Plugin-System am besten mit Service Providern zu realisieren ist, jedoch ist mir immer noch nicht klar, wie das ganze funktioniert bzw wie so ein System prinzipiell aufgebaut ist. Daher meine Frage: Könnte jemand bitte ein einfaches Beispiel posten, wie so ein System aussehen könnte bzw. kennt ihr gute Tutorials zu solchen Plugin-Systemen? Ein fertiges Framework wie das JPF scheint mir für meine Ansprüche zu umfangreich zu sein.

Ich weiß, dass dieses Thema schon des öfteren in diversen Foren behandelt wurde, jedoch bin ich aus nichts von dem was ich bisher gelesen habe richtig schlau geworden.

Ich danke euch jetzt schon mal für eure Mühe.

Mac
 

faetzminator

Gesperrter Benutzer
Es gibt einfache OSGi's - welche das können (OSGi ? Wikipedia)
Ansonsten brauchst du einfach einen URLClassLoader, holst dir eine Instanz der Klasse, checkst sie mit instanceof und speicherst sie in einer List oä
 

MacMallow

Mitglied
So...danke für den Tipp, aber ich habs nun doch anders versucht.

Ich habe eine Klasse "MeineImplementierung" geschrieben welches ein Interface "ImeinInterface" implementiert. Das ganze habe ich in eine jar gepackt, in der im META-INF-Ordner ein Ordner namens services liegt. In dieser liegt eine Datei namens "org.test.ImeinInterface" (in diesem Packet liegt mein Interface) und welche die Zeile "org.test.MeineImplementierung" enthält.

In meinem Hauptprogramm frage ich nun mit folgendem Code nach Implementierungen meines Interfaces:
Code:
ServiceLoader<ImeinInterface> loader = ServiceLoader.load(ImeinInterface.class);
		for( ImeinInterface i : loader) {
			i.schreibe(); //eine Methode des Interfaces
		}

Wenn ich die jar nun in Eclipse zum Buildpath hinzufüge, funktioniert das einwandfrei und die Methode wird ausgeführt. Da ich aber nicht weiß, welche und wieviele jar-Dateien ich später verwende, will ich einen Plugin-Ordner zum Classpath hinzufügen, in dem dann meine jar-Dateien liegen. Wie mache ich das? Bis jetzt ist es mir auf diese weiße nur möglich auf Implementierungen zuzugreifen, deren jar-Datei mir schon zu Beginn bekannt sind. Auf jede jar die ich aber später in den Ordner lege habe ich keinen Zugriff.
 

faetzminator

Gesperrter Benutzer
Genau darum benötigst du den von mir erwähnten URLClassLoader Weil diese noch nicht im Classpath und somit der JVM unbekannt sind ;)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Java Plugin System (ohne OSGI) Allgemeine Java-Themen 10
Joew0815 Best Practice Wie am besten Plugin-System erstellen? Allgemeine Java-Themen 12
agent47 Plugin System Verständnisfrage Allgemeine Java-Themen 6
P System.out im Eclipse plugin Allgemeine Java-Themen 4
F Probleme mit eigenem Plugin-System Allgemeine Java-Themen 3
N Plugin-System: Klassen über String laden Allgemeine Java-Themen 3
T Hilfe bei Programm. IDE: Eclipse mit EV3-Plugin, lejos Allgemeine Java-Themen 8
Meeresgott Best Practice MVC mit Plugin-Feature Allgemeine Java-Themen 4
J Application mit PLugin erweitern Allgemeine Java-Themen 2
T Eclipse IDE Plugin Error Log Allgemeine Java-Themen 0
S Maven Jars dynamisch laden / Plugin-Struktur erstellen Allgemeine Java-Themen 14
D Bradley Local Thresholding plugin imagej Allgemeine Java-Themen 6
A Best Practice Java - eine Art Plugin-Struktur Allgemeine Java-Themen 3
M eigenes Seekarten-Tool (oder PlugIn?) Allgemeine Java-Themen 2
J Java code "plugin" fähig machen Allgemeine Java-Themen 4
P Find Bugs plugin Allgemeine Java-Themen 2
C BlackBox-Framework - Plugin Programmierung Allgemeine Java-Themen 4
F Framework/Plugin für Tree-Darstellung in Graph Allgemeine Java-Themen 0
F Parser Framework/Plugin für Datei in Custom-Format Allgemeine Java-Themen 2
B Erste Schritte Plugin erkennen und Class Dateien anzeigen lassen Allgemeine Java-Themen 3
M ImageJ: Mit PlugIn Weichzeichnungsfilter schreiben Allgemeine Java-Themen 9
X Java Plugin Befehle Allgemeine Java-Themen 2
O Plugin perfomrant implementieren Allgemeine Java-Themen 12
Y PlugIn für ImageJ Allgemeine Java-Themen 2
B Java Plugin schreiben Allgemeine Java-Themen 11
U Realisierung einer "Plugin-Schnittstelle": Allgemeine Java-Themen 12
D Checkstyle Plugin Allgemeine Java-Themen 4
schlingel Plugin-Architektur - Welche nehmen? Allgemeine Java-Themen 6
partsch Eclipse UML - Plugin Allgemeine Java-Themen 2
A Start von Java Plugin Allgemeine Java-Themen 2
S URLClassLoader und Eclipse Plugin Allgemeine Java-Themen 4
S Intellisense nach SVN Subclipse Plugin Allgemeine Java-Themen 2
B maven 2 error bei plugin download Allgemeine Java-Themen 7
V plugin.jar in application aus jar Allgemeine Java-Themen 2
N Java Plugin? Allgemeine Java-Themen 2
N Argumente für Plugin-Architektur Allgemeine Java-Themen 5
S Plugin zur Generierung von Builds Allgemeine Java-Themen 7
J Java Plugin probleme beim Laden? Allgemeine Java-Themen 3
G AI als PlugIn Allgemeine Java-Themen 2
R Synthesizer-PlugIn Allgemeine Java-Themen 4
S java plugin in firefox/chroot_x86_32 integrieren Allgemeine Java-Themen 3
L Java6 update N bekommt neues Browser-Plugin, bitte testen. Allgemeine Java-Themen 7
G Plugin (Visual Editor) in Eclipse einfügen Allgemeine Java-Themen 2
F Plugin damit M$ Word Java syntax versteht? Allgemeine Java-Themen 12
V Relative Pfade in Eclipse RCP Plugin Allgemeine Java-Themen 14
G Java-Plugin für Vista (x64)? Allgemeine Java-Themen 3
J Suse + Tomcat + Sysdeo Plugin: Tomcat als user starten Allgemeine Java-Themen 2
G Eclipse RCP vs. PlugIn Allgemeine Java-Themen 2
reibi Eclipse PlugIn selber programmieren Allgemeine Java-Themen 3
M PlugIn für Klasse bauen Allgemeine Java-Themen 6
G plugin für eclipse zum kommentieren Allgemeine Java-Themen 9
N Als *.esp (Elder Scrolls Plugin) exportieren Allgemeine Java-Themen 12
C Dynamisches Nachladen von JARs (Plugin) Allgemeine Java-Themen 3
D Eigener Maven2 Plugin Server? Allgemeine Java-Themen 3
P Fehlermeldung "Die Klasse sun/plugin/javaRunTime kann n Allgemeine Java-Themen 3
S Nice Plugin in Eclipse Allgemeine Java-Themen 2
K PDF PlugIn zur Anzeige/Druck von PDF's Allgemeine Java-Themen 7
T Plugin um unbenötigte librarys zu finden Allgemeine Java-Themen 12
E Visueller Editor für Druckformulare - Plugin für Eclipse Allgemeine Java-Themen 2
rambozola jpg in mit eclipse-plugin one-jar erstellter jar-datei Allgemeine Java-Themen 2
T eigenes Browser Plugin Allgemeine Java-Themen 6
T Plugin engine? Allgemeine Java-Themen 10
S ActiveX Java Plugin Allgemeine Java-Themen 2
G Plugin Management Allgemeine Java-Themen 2
A Anwendungs-Design (Plugin-Architektur) Allgemeine Java-Themen 4
T OJI-Plugin Allgemeine Java-Themen 4
X Input/Output InputStream/Scanner(System.in) read()/hasNextLine() block unterbrechen Allgemeine Java-Themen 7
P9cman java.Lang Klassen fehlen in JRE System Library Allgemeine Java-Themen 1
B Lottospielen mit System, Versuch 2, noch umständlicher als vorher Allgemeine Java-Themen 1
J Frage zu System.getproperties. Allgemeine Java-Themen 60
sascha-sphw Erste Schritte Unit und Integration-Tests im Java Modul System Allgemeine Java-Themen 10
F Frage zu System.in Allgemeine Java-Themen 3
E System property setzten Allgemeine Java-Themen 8
Kirby.exe Movement System für Spiel Allgemeine Java-Themen 13
O Beziehung System.exit(x) <>Errorlevel Allgemeine Java-Themen 2
B System.out Ausgabe auf jtextarea Fehlersuche Allgemeine Java-Themen 8
F System Tray Menubutton ActionListener Allgemeine Java-Themen 5
H Im Tiled-Map-System ein Item anklicken Allgemeine Java-Themen 0
D System.arraycopy verhält sich seltsam Allgemeine Java-Themen 1
C Login System Allgemeine Java-Themen 19
A BufferedReader ohne System.in Allgemeine Java-Themen 9
VfL_Freak JDK installieren System-Property "user.dir" Allgemeine Java-Themen 6
J System.arraycopy ergibt anderes Resultat als for-loop Allgemeine Java-Themen 4
F Wie kann ich auf einem System prüfen, ob eine lib verfügbar ist? Allgemeine Java-Themen 2
D Java System.out::println Allgemeine Java-Themen 1
D Methoden Java Applikation Die System Auslastung optimieren ? Allgemeine Java-Themen 7
S Ist Java ein geschlossenes System? Allgemeine Java-Themen 2
L Erste Schritte Suche Java Wiki System? Allgemeine Java-Themen 5
chuxXo System/JLayer Volume ändern Allgemeine Java-Themen 0
Neumi5694 System.out und System.err umleiten - NICHT im Quelltext Allgemeine Java-Themen 4
X System.out/err(Die Console) in JTextArea ausgeben Allgemeine Java-Themen 2
S Best Practice System.arrayCopy verändert Ziel-Array Allgemeine Java-Themen 2
A Methoden Der Sinn von system.out.print(); Allgemeine Java-Themen 9
A System freezes when trying to run external command from Java with wait for Allgemeine Java-Themen 3
A Java | Login-System Allgemeine Java-Themen 3
C System.out.print("") Compiler Fehler Allgemeine Java-Themen 2
C System.in erhält Input von Tastatur. wo wird das festgelegt? Allgemeine Java-Themen 4
F Benachrichtigungs-System Webapp Java Servlet Allgemeine Java-Themen 10
M collection persistence system Allgemeine Java-Themen 4
V System.out.println an jeder Stelle im Projekt löschen Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben