Eclipse RCP:如何解决插件依赖关系& classpath问题?

时间:2010-06-18 09:56:21

标签: eclipse plugins classpath rcp

我正在开发一个基于eclipse的RCP项目。它一直很好,但最近我想我会升级它以使用新的eclipse版本(3.2 - > 3.5)。

经过一些麻烦,它在新平台上运行。然后我做了一些事情。不知道是什么。最终的结果是,当我的一个插件(A)尝试访问其中一个依赖插件(B)(也是我的一个插件)中的类时,我现在得到一个类路径错误。

据我所知,插件A在其'依赖列表中有插件B,编译器没有显示错误。为了测试,我用一个类创建了一个新的插件C并从插件A访问了该类。这很好。

有没有人有任何提示来解决此类问题?要检查的设置清单?我一直在努力奋斗几个小时,无处可去!特别令人沮丧的是,直到我改变了一些东西才开始工作!

由于

更新

我还应该说项目很旧并且使用plugin.xml而不是清单。这可能是个问题吗?有没有办法升级?

5 个答案:

答案 0 :(得分:3)

一些想法:

  • 清理并构建每个项目(可能在重启Eclipse之后)
  • 检查是否还导出了所需的包
  • 检查错误日志,可能有一些无法加载的插件等
  • 检查运行配置,是否存在所有必需的插件
  • 如果问题没有在运行时工作台中发生,而是在导出的RCP应用程序中,那么检查在导出期间是否使用与Eclipse相同的设置编译项目

我希望,有些东西有助于这些。

答案 1 :(得分:2)

您可以在运行配置中尝试以下操作:

  1. 标签中,检查工作区数据
  2. 下的清除工作区
  3. 配置标签中,在配置区
  4. 下检查清除之前的配置区域

    每次遇到一些奇怪的 ClassNotFound 错误时,这都会对我有所帮助。

答案 2 :(得分:1)

如果我理解正确你没有编译器错误,但是当你运行时,你会发现类找不到异常?您可以尝试 PDE工具>从项目的上下文菜单中更新Classpath ,看看你是否在MANIFEST.MF文件之外声明了任何依赖项,这将导致编译在运行时失败的代码。

答案 3 :(得分:1)

我很久以前就为RCP开发了,但是如果我没有错,那么从3.4或3.5开始你必须在插件中声明哪些包/类是为依赖插件导出的,哪些不是。 这与在包中使用“内部”来标记未导出的包的旧约定不同。

由于您拥有来自非常旧版eclipse的plugin.xml,因此可能是问题所在,因为Eclipse RCP 3.2中没有强制执行从一个插件到另一个插件的导出资源。

答案 4 :(得分:0)

还有一个补充,希望它有所帮助。 打开plugin.xml,选中“build”选项卡,查看如何配置“二进制构建”。它会影响编译和导出的文件。 请参阅此处的二进制构建:http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.pde.doc.user%2Fguide%2Ftools%2Feditors%2Fmanifest_editor%2Fbuild.htm