我以前从未使用插件片段。我认为通过在片段中创建一个新类并在片段的清单中导出包含它的包,我可以从另一个已经依赖于主机插件的插件访问该类。但是,我似乎无法做到这一点。除了主机插件之外,任何插件是否都可以看到片段的内容?如果是这样,我有什么特别的事情可以做到这一点吗?
答案 0 :(得分:8)
问题不在于,该片段的内容对另一个插件是不可见的:它们是 - 只是尝试加载例如来自类路径的属性文件,如果片段提供了该属性文件,它仍然有效。
但是你没有的是关于片段内容的编译时信息。这是片段的原则:你不能依赖它。如果有人安装了碎片,你就不知道了。
这也不仅仅是“主机插件之外的任何插件”的问题。这是一个问题,即使是主机插件本身也有。它不知道片段在编译时的存在。
您也无法可靠地使用片段覆盖部分主机插件的类:FAQ Can fragments be used to patch a plug-in?,如果这是您想要做的。该页面还描述了如何完成。
希望这有帮助。