Eclipse plugin 向RCP应用程序中的插件文件夹添加和删除插件

Eclipse plugin 向RCP应用程序中的插件文件夹添加和删除插件,eclipse-plugin,eclipse-rcp,rcp,Eclipse Plugin,Eclipse Rcp,Rcp,我是Eclipse插件开发的新手。当我遇到某些插件概念时,我的脑海中出现了一些问题 对于一个基于插件的产品,如果我们想添加一个新功能,比如说执行某些验证,我们只需要删除一个写有验证逻辑的特定插件。类似地,如果我们想从产品中删除某些功能,我们只需要删除提供该功能的特定插件 我试着在自己构建的一个RCP产品中执行相同的操作。我试图从plugin文件夹中删除插件,以禁用应用程序中的特定功能。但它得到的错误信息如下所示 !MESSAGE Bundle com.my.app.application_1.0

我是Eclipse插件开发的新手。当我遇到某些插件概念时,我的脑海中出现了一些问题

对于一个基于插件的产品,如果我们想添加一个新功能,比如说执行某些验证,我们只需要删除一个写有验证逻辑的特定插件。类似地,如果我们想从产品中删除某些功能,我们只需要删除提供该功能的特定插件

我试着在自己构建的一个RCP产品中执行相同的操作。我试图从plugin文件夹中删除插件,以禁用应用程序中的特定功能。但它得到的错误信息如下所示

!MESSAGE Bundle com.my.app.application_1.0.0.201208101553 [6] was not resolved.
!SUBENTRY 2 com.my.app.application 2 0 2012-08-17 12:37:13.256
!MESSAGE Missing imported package com.my.app.views.console_0.0.0.

!ENTRY org.eclipse.osgi 4 0 2012-08-17 12:37:13.256
!MESSAGE Application error
!STACK 1
java.lang.RuntimeException: Application "com.my.app.application.application" could not be found in the registry. The applications available are: org.eclipse.equinox.app.error.
    at org.eclipse.equinox.internal.app.EclipseAppContainer.startDefaultApp(EclipseAppContainer.java:248)
    at org.eclipse.equinox.internal.app.MainApplicationLauncher.run(MainApplicationLauncher.java:29)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1410)

你能告诉我为什么会出现这种错误以及如何克服这种错误吗

每个RCP产品都有一个定义应用程序的主插件(请阅读Lars Vogel的更多内容)。您删除了一个导出
com.my.app.views.console
包的插件,但主插件(
com.my.app.application
)需要(导入)该包。因此,无法解析主插件,也无法找到该插件中定义的应用程序-这是您在异常消息中看到的内容。

如果您希望能够在不中断应用程序的情况下删除com.my.app.views.console插件,您必须找到一种方法来删除com.my.app.application插件对com.my.app.views.console插件的硬依赖关系。

您好,谢谢您宝贵的回复。那么,我怎样才能达到我在问题中提出的情况呢?我想从我的RCP产品的plugin文件夹中删除一些插件,以实现某些核心功能。但是,正如您所指定的,如果主插件导入的插件不在插件文件夹中,它将抛出一个异常,就像我在上面的问题中所显示的一样。因此,请建议一种方法,通过它我可以实现上述情况Hi twindham,你能指导我如何消除这种困难的依赖吗。让我们完成这个练习。我假设在您的开发环境中,两个插件都作为项目打开。我将告诉您要做的事情将帮助您识别需要更改的代码。第一步。关闭com.my.app.views.console插件的插件项目。第二步。注意当您尝试编译时,插件项目com.my.app.application插件中显示的编译错误。第三步。通过将代码从com.my.app.views.console插件移动到com.my.app.application插件,修复这些编译错误。免责声明:这可能有效,也可能无效。