Hallo zusammen,
um mich mit den ganzen Plugin-Konzepten auseinanderzusetzen, habe ich folgendes Tutorial für den Einstieg verwendet: http://www.java-blog-buch.de/d-plugin-entwicklung-in-java/
Das funktioniert soweit auch, allerdings habe ich einige Verständnisprobleme:
Angenommen, es gibt zwei Projekte in Eclipse, eines für das Hauptprogramm, eines für das Plugin. Das Plugin hält sich an irgendein Interface und kann damit vom Hauptprogramm gesteuert werden. Wenn aus dem Plugin eine JAR erzeugt wird, kommt die im Hauptprogramm in das Plugins-Verzeichnis und wird von dort geladen.
Was ist nun aber, wenn ich aus dem Plugin auf den Code des Hauptprogramms zugreifen möchte? Beispielsweise weil ich ein Statusfenster instanzieren möchte, dessen Quelltext im Hauptprogramm definiert ist?
Oder ist davon abzuraten, weil sich der Quelltext des Hauptprogramms ändern könnte und das Plugin dann nicht mehr funktioniert?
Falls ja - wie sollte beispielsweise folgendes Szenario behandelt werden:
Das Hauptprogramm verwendet abstrakte Klassen, die von JPanel abgeleitet sind und zusätzliche Methoden (load()/save()) vorschreiben. Diese sind dafür da, die Einstellungen des Programms zu bearbeiten - da die Plugins ebenfalls veränderbare Einstellungen haben können, sollen diese auch die abstrakten Klassen verwenden. Aber dazu müssten sie den Quelltext kennen...
In Eclipse kann ich ja im Plugin das Hauptprojekt referenzieren - allerdings, wenn ich dann eine JAR für das Plugin erstellen möchte (per ANT-Task) meckert er, weil er die Klassen nicht findet - nutze ich die Export-Funktion von Eclipse für JARs, funktioniert es auch nicht. Woran könnte das liegen - kann das prinzipiell funktionieren? Klar, im Moment des Kompilierens sind ja nur die Plugin-Klassen vorhanden, die Hauptprogramm-Klassen gibt es ja erst wenn das Plugin vom Hauptprogramm gestartet wurde...
Und wie kann ich effizient Plugins entwickeln? Muss ich erst das Plugin-Projekt in eine JAR packen, die dann ins Plugin-Verzeichnis der Hauptanwendung kopieren, diese starten und dann schauen ob der Code läuft? Oder kann ich zu Debugging-Zwecken den Plugin-Code direkt (also ohne JAR) einbinden und testen und erst wenn alles läuft, eine JAR draus bilden?
Hoffe ich habe nicht zu verwirrend geschrieben, ist schon ziemlich spät...
um mich mit den ganzen Plugin-Konzepten auseinanderzusetzen, habe ich folgendes Tutorial für den Einstieg verwendet: http://www.java-blog-buch.de/d-plugin-entwicklung-in-java/
Das funktioniert soweit auch, allerdings habe ich einige Verständnisprobleme:
Angenommen, es gibt zwei Projekte in Eclipse, eines für das Hauptprogramm, eines für das Plugin. Das Plugin hält sich an irgendein Interface und kann damit vom Hauptprogramm gesteuert werden. Wenn aus dem Plugin eine JAR erzeugt wird, kommt die im Hauptprogramm in das Plugins-Verzeichnis und wird von dort geladen.
Was ist nun aber, wenn ich aus dem Plugin auf den Code des Hauptprogramms zugreifen möchte? Beispielsweise weil ich ein Statusfenster instanzieren möchte, dessen Quelltext im Hauptprogramm definiert ist?
Oder ist davon abzuraten, weil sich der Quelltext des Hauptprogramms ändern könnte und das Plugin dann nicht mehr funktioniert?
Falls ja - wie sollte beispielsweise folgendes Szenario behandelt werden:
Das Hauptprogramm verwendet abstrakte Klassen, die von JPanel abgeleitet sind und zusätzliche Methoden (load()/save()) vorschreiben. Diese sind dafür da, die Einstellungen des Programms zu bearbeiten - da die Plugins ebenfalls veränderbare Einstellungen haben können, sollen diese auch die abstrakten Klassen verwenden. Aber dazu müssten sie den Quelltext kennen...
In Eclipse kann ich ja im Plugin das Hauptprojekt referenzieren - allerdings, wenn ich dann eine JAR für das Plugin erstellen möchte (per ANT-Task) meckert er, weil er die Klassen nicht findet - nutze ich die Export-Funktion von Eclipse für JARs, funktioniert es auch nicht. Woran könnte das liegen - kann das prinzipiell funktionieren? Klar, im Moment des Kompilierens sind ja nur die Plugin-Klassen vorhanden, die Hauptprogramm-Klassen gibt es ja erst wenn das Plugin vom Hauptprogramm gestartet wurde...
Und wie kann ich effizient Plugins entwickeln? Muss ich erst das Plugin-Projekt in eine JAR packen, die dann ins Plugin-Verzeichnis der Hauptanwendung kopieren, diese starten und dann schauen ob der Code läuft? Oder kann ich zu Debugging-Zwecken den Plugin-Code direkt (also ohne JAR) einbinden und testen und erst wenn alles läuft, eine JAR draus bilden?
Hoffe ich habe nicht zu verwirrend geschrieben, ist schon ziemlich spät...