在使用Intellij IDEA插件一段时间之后,我注意到具有外部依赖性的插件工作正常,即使这些依赖项未与插件本身捆绑在一起,也不会在任何地方公开声明。
选择一个随机的例子:GenerateToString插件除其他外依赖于log4j。但是如果你看一下jar文件,你会看到它只包含它自己的类加上一些资源(图像和html文件)和元数据(强制性的plugin.xml和MANIFEST.MF),其中没有任何一个对log4j的引用。并且该jar文件是您安装插件所需的唯一内容。
怎么可能? IDEA如何管理这些依赖项,以便它不会在运行时抛出ClassNotFoundException
或类似的东西?
答案 0 :(得分:6)
IDEA使用自定义类加载器,如果它没有在插件分发中找到所需的类,则会在位于IDEA_HOME/lib
目录中的所有jar中搜索它。