0

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

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

我尝试在我构建的 RCP 产品之一中执行相同的操作。我试图从插件文件夹中删除一个插件以禁用我的应用程序中的特定功能。但它收到如下错误消息,

!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)

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

4

2 回答 2

2

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

于 2012-08-17T07:43:48.043 回答
0

如果您希望能够在不破坏应用程序的情况下删除 com.my.app.views.console 插件,则必须找到一种方法来删除 com.my.app.application 插件所具有的硬依赖你的 com.my.app.views.console 插件。

于 2012-08-18T13:15:26.847 回答