Zum Inhalt springen

Verständnisproblem Projektabhängigkeiten


IWI

Empfohlene Beiträge

Hi!

Ich hab da mal eine Frage zur Abhängigkeit von Projekten. Es geht darum, dass ich ein bestehendes Projekt durch ein Plugin erweitern möchte.

Ich erklärs mal am Beispiel, wo genau mein Problem liegt.

Um genau zu sein würde ich gerne eine Art Autovervollständigung in das Projekt durch mein Plugin einbauen.

Nun aber vollgendes: Wenn mein Plugin nun das Projekt kennt, aber nicht anders herum, wann weiß das Projekt dann, wann das Plugin aktiv werden muss? Ich kann es (das Plugin) im BuildPath nicht referenzieren und kann somit auch keine Instanz davon erzeugen, um eine Methode innerhalb dieses Plugins aufzurufen. Denn wenn ich das Plugin referenziere, kann das Plugin wiederum das Projekt nicht referenzieren, da ich sonst einen unerlaubten Kreislauf habe.

Mir ist leider bislang nur der Weg bekannt, dass im Projekt eine Instanz einer Klasse des Plugins erzeugt wird und diese dann im Laufe des Programms aufruft. Schnittstellen sind mir sicherlich bekannt, aber vllt. ist mir die korrekte Verwendung einfach auch noch nicht ganz klar. Prinzipiell stellt das Projekt ja Schnittstellen bereit. Das Plugin kennt diese Schnittstellen und kann sie implementieren. Aber wie merkt das Projekt nun wiederum, dass ein externes Plugin diese Schnittstelle implementiert, ohne ein Instanze einer Klasse dieses Plugins zu erzeugen, da dies ja nicht erlaubt ist (--> Kreislauf)?

Gruß

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dafür gibt es Hunderte von Möglichkeiten.

Die bekanntesten sind wohl:

- Produkt durchsucht ein Verzeichnis nach Plugins, z.B. im JAR-Format und erzeugt diese (per Reflection)

- Plugins werden in einer (XML-)Datei des Produkts registriert

- Produkt bietet einen Pluginmanager welcher es erlaubt Plugins zu installieren

Du musst unterscheiden zwischen Abhängigkeiten zur Compilezeit (Buildpath) und Abhängigkeiten zur Laufzeit.

Mit einem normalen Java SDK/JRE (kein OSGi) gibt es zur Laufzeit keine Definitionen von Abhängigkeiten. Zur Laufzeit sind auch keine Produkte oder Projekte bekannt. Da gibt es nur einen Classpath. Alles was in dem Classpath ist kann referenziert werden.

Der Grund warum eine IDE meckert ist logisch:

Wenn A von B abhängt und B von A dann kann nicht gebaut werden denn:

-Um A zu kompilieren werden die Class-Dateien von B benötigt

-Um B zu kompilieren werden die Class-Dateien von A benötigt

Und da wäre der Kreis wieder :)

Es macht auch keinen Sinn dass das Produkt seine Plugins kennt, sonst wären es ja keine Plugins. Dadurch hättest du die Abhängigkeit ja so gebaut das für ein neues Plugin jedesmal eine Änderung im Produkt notwendig wäre.

Bearbeitet von ksg9-sebastian
Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...