【发布时间】:2017-10-26 13:52:24
【问题描述】:
我一直在为 IntelliJ 的插件开发设置工作区。有一个问题我无法解决。
我有两个插件:A 和 B。B 插件依赖于 A。A 插件作为可安装的 zip 包提供(我没有代码,我不想将其添加到我的项目)。
在手册中,我遇到了this page。我将 A 插件(从 zip 文件中提取)中的 jar 添加到运行 B 插件时使用的 SDK。不幸的是,当沙箱被引导时,我收到以下错误:
Problems found loading plugins:
Plugin "B" was not loaded: required plugin "A" not installed.
Disable B
Open plugin manager
这是否意味着 SDK 中的插件没有自动安装?
我尝试在沙盒中安装 A 插件,但随后出现强制转换异常 - 使用了两个不同的类加载器。
当然,我在 B.plugin.xml 文件中有相应的依赖配置:
<depends>A</depends>
我的问题是我应该如何提供 A 插件才能开发 B 插件?没有A的源码可以开发B插件吗?
在我添加到 SDK 的类路径的 jar 中,有一个包,其中包含 A 插件的 plugin.xml 文件。该插件也未列在插件列表中。
我确信这两个插件都配置正确,因为当我将它们安装在独立的 IntelliJ 实例中时没有问题。此外,我没有任何编译错误。
经过几个小时的调试。 A 插件被标记为未安装,因为在 PluginManagerCore:loadDescriptorsFromClassPath 方法中没有提供适当的 jar URL。 BootstrapClassLoaderUtil 似乎没有包含 SDK 中配置的所有条目。
我尝试设置 -Didea.additional.classpath 属性,但我再次遇到类转换异常。
【问题讨论】:
标签: intellij-idea intellij-plugin