问题是,在“导入”的包列表中没有看到这个包及其子包。当我导入所有 pde 包时,org.eclipse.pde.internal 无论如何都会变得可用。但我没有看到它的来源。我该如何管理这个包?
2 回答
以下是来自 Eclipse 社区的一些规则,它们可能会有所帮助:
包名称应与插件名称匹配。如果他们不从右边剥离。您寻找的代码应该在插件中
org.eclipse.pde.internal
(不存在)。剥离internal
,你会得到一个现有的插件。OSGi 允许对其他插件隐藏插件 X 中的包。这个功能并没有真正使用。您仍然可以导入这些类,但 Eclipse 不会在代码完成中显示它们,并且您会收到警告。OSGi/bundle 类加载器有一个选项可以抛出
NoClassDefFoundError
,但该选项通常被禁用。MANIFEST.MF
您可以在尝试从中导入的插件中找到导出列表。大多数未导出的包都在一个包下面
internal
,所以这是一个提示:不要使用这个代码。它不是官方 API 的一部分。它可以在 Eclipse 或插件的下一个版本中更改,并且没有人会关心您的代码是否中断(与官方 API 不同)。
当然,世界没有那么简单。这就是为什么不赞成使用内部代码但禁用类加载器选项的原因(= Eclipse 可以强制执行此行为,但他们不会)。
如果您认为某些内部 API 会很好用,请在https://bugs.eclipse.org/bugs/提交错误报告
我的同事解决了这个问题。
org.eclipse.pde.internal
在org.eclipse.pde.ui
.Eclipse 3.7.2 根本没有 PDE 源。存储库中的相应目录为空。我降档到 3.7.0,现在可以了。