8

在使用 Intellij IDEA 插件一段时间后,我注意到具有外部依赖项的插件工作正常,即使这些依赖项没有与插件本身捆绑在一起,也没有在任何地方公开声明。

随机选择一个例子:GenerateToString插件依赖于 log4j。但是如果你看一下 jar 文件,你会发现它只包含它自己的类以及一些资源(图像和 html 文件)和元数据(必需的 plugin.xml 和 MANIFEST.MF),这些都没有参考 log4j。并且该 jar 文件是您安装插件所需的唯一内容。

这怎么可能?IDEA 如何管理这些依赖关系,使其在运行时不会抛出 aClassNotFoundException或类似的东西?

4

1 回答 1

6

IDEA 使用自定义类加载器,如果在插件分发​​中找不到所需的类,则会在IDEA_HOME/lib目录下的所有 jar 中进行搜索。

于 2012-07-15T14:12:00.133 回答