在主机插件外部是否可见碎片的内容?

问题描述:

我从来没有使用过插件片段。我认为通过在片段中创建一个新的类并导出包含它的包到片段的清单中,我可以从另一个插件访问那个已经依赖主机插件的插件。但是,我似乎无法完成这项工作。除了主机插件之外,任何插件都可以看到片段的内容吗?如果是这样,有什么特别的我必须做,以允许这个?在主机插件外部是否可见碎片的内容?

问题不在于,片段的内容对另一个插件不可见:它们是 - 只是尝试加载例如一个来自类路径的属性文件,如果该属性文件是由该片段提供的,它仍然有效。

但是你没有的是关于片段内容的编译时信息。这是一个片段的原则:你不能依赖它。你不知道,如果有人安装了碎片。

这不仅仅是“除主机插件之外的任何插件”所具有的问题。这是一个问题,即使是主机插件本身。它不知道在编译时片段的存在。

您也无法可靠地使用片段来覆盖主机插件类的部分:FAQ Can fragments be used to patch a plug-in?,如果这是您想要执行的操作。该页面还介绍了如何完成。

希望这会有所帮助。

+0

非常感谢。这一切对我来说都非常有意义,因为它已经被拼写出来了 - 我应该已经意识到即使主机插件在编译时也不能使用关于它的片段的任何信息。我原本对片段很好奇,因为我想在其中包含测试代码。在片段之外无法访问测试代码实际上是一个很好的好处。 – 2010-04-15 05:29:22