2012-07-15 7 views
8

Po graniu z wtyczkami Intellij IDEA przez pewien czas zauważyłem, że wtyczki z zewnętrznymi zależnościami działają dobrze, nawet jeśli te zależności nie są dołączone do samej wtyczki ani nie są publicznie deklarowane nigdzie.W jaki sposób Intellij IDEA zarządza zależnościami wtyczek?

Wybieranie losowego przykładu: wtyczka GenerateToString zależy, między innymi, od log4j. Ale jeśli zajrzysz do pliku jar, zobaczysz, że zawiera on tylko własne klasy plus niektóre zasoby (obrazy i pliki html) i metadane (obowiązkowe plugin.xml i MANIFEST.MF), z których żaden nie ma żadnych odniesienie do log4j. I ten plik JAR jest jedyną rzeczą, którą potrzebujesz zainstalować wtyczkę.

Jak to możliwe? W jaki sposób IDEA radzi sobie z tymi zależnościami, tak aby nie rzucały one w środowisko wykonawcze w stylu ClassNotFoundException?

Odpowiedz

6

IDEA używa niestandardowego programu ładującego klasy, jeśli nie znajdzie wymaganej klasy w dystrybucji wtyczek, jest przeszukiwany we wszystkich słoikach znajdujących się w katalogu IDEA_HOME/lib.

Powiązane problemy