2012-07-15 69 views
8

在使用Intellij IDEA插件一段时间后,我注意到具有外部依赖关系的插件可以很好地工作,即使这些依赖关系没有与插件本身捆绑在一起,也不会在任何地方公开声明。Intellij IDEA如何管理插件依赖关系?

挑选一个随机的例子:GenerateToString插件取决于,除其他外,在log4j。但是如果你看一下jar文件,你会发现它只包含它自己的类以及一些资源(图片和html文件)和元数据(强制plugin.xml和MANIFEST.MF),其中没有任何一个参考log4j。那个jar文件是你需要安装插件的唯一东西。

这怎么可能? IDEA如何管理这些依赖关系,以便在运行时不会抛出ClassNotFoundException之类的东西?

回答

6

IDEA使用自定义类加载器,如果它没有在插件分配中找到所需的类,则在位于IDEA_HOME/lib目录中的所有jar中进行搜索。