Wie verwaltet Intellij IDEA Plugin-Abhängigkeiten?

8

Nachdem ich eine Weile mit Intellij IDEA Plugins gespielt habe, ist mir aufgefallen, dass Plugins mit externen Abhängigkeiten gut funktionieren, auch wenn diese Abhängigkeiten nicht mit dem Plugin selbst verknüpft sind oder öffentlich deklariert sind.

Ein zufälliges Beispiel auswählen: Das GenerateToString Plugin hängt unter anderem von log4j ab. Aber wenn Sie in die JAR-Datei schauen, werden Sie sehen, dass sie nur ihre eigenen Klassen plus einige Ressourcen (Bilder und HTML-Dateien) und Metadaten (die obligatorische plugin.xml und die MANIFEST.MF) enthält, von denen keine hat Verweis auf log4j. Und diese JAR-Datei ist das einzige, was Sie brauchen, um das Plugin zu installieren.

Wie ist das möglich? Wie verwaltet IDEA diese Abhängigkeiten, so dass es in der Laufzeitumgebung keine ClassNotFoundException oder ähnliches ausgibt?

    
Otavio Macedo 15.07.2012, 13:28
quelle

1 Antwort

6

IDEA verwendet einen benutzerdefinierten Classloader. Wenn die erforderliche Klasse in der Plugin-Verteilung nicht gefunden wird, wird in allen im IDEA_HOME/lib -Verzeichnis gefundenen Dateien gesucht.

    
CrazyCoder 15.07.2012, 14:12
quelle

Tags und Links