我有一个Eclipse RCP应用程序,我正在努力安装我创建的应该单独部署到上述应用程序的插件。
为此,我将应用程序作为./App -console
启动,当它停止加载时,我输入:
install file://URLTOjAR/plugin.jar
它返回一个插件ID(比如288
),所以我之后输入:
start 288
在此之后,该插件工作正常,但是当我重新启动应用程序时,通过使用ss我只能看到该插件只是“已解决”,但我希望它能够启动。
有没有办法实现自动化?
答案 0 :(得分:2)
由于您使用的是Eclipse RCP应用程序,因此您最有可能使用SimpleConfigurator来确定当前安装的软件包列表。打开文件App / configuration / org.eclipse.equinox.simpleconfigurator / bundles.info
在该文件中有一个已安装的软件包列表,它们的版本以及它们是否应该自动启动。你会看到这样的一行:
ch.qos.logback.classic,0.9.27.v20110224-1110,plugins/ch.qos.logback.classic_0.9.27.v20110224-1110.jar,4,false
该行的不同部分是:
所以,只需在你的bundles.info中添加这样一行,你应该好好去。
答案 1 :(得分:1)
安装和启动的软件包应该在下次启动时启动。
当框架尝试启动bundle并且它仍然处于RESOLVED状态时,激活器可能抛出异常。检查日志。也许捆绑包不能很好地处理服务,这些资源在启动时尚未可用。
答案 2 :(得分:1)
这是解决这个问题的另一种方法。比使用简单配置器有点麻烦(参见我的其他答案),但它应该更广泛适用。
在文件configuration / config.ini中,应该有一个属性osgi.bundles
。此属性采用以逗号分隔的bundle列表,以在osgi实例中使用。该属性如下所示:
osgi.bundles=file:/path/to/bundle,file:/path/to/other/bundle@1\:start
@ 1是捆绑包的起始级别,:start
表示捆绑包应该是自动启动的。
答案 3 :(得分:0)
我不确定天气我的问题是对的。但我会尝试一下:
您为什么要安装与应用程序无关的bundle / plugin。如果您的插件/ bundle与正在运行的应用程序环境无关,那么只需使用eclispe环境启动带有所需其他插件的bundle即可。
我认为这里发生的事情是捆绑得到延迟加载。如果应用程序插件不使用捆绑包,则有意义。
如果你真的想让你的应用程序开始使用,你可以做的是,
找到列出RCP应用中捆绑包的所有开始信息的配置文件。
*这可以是config.ini文件 *或者如果应用程序使用simpleconfigurator
,则为bundles.info文件将您的捆绑信息插入其中一个配置文件中。 (如果你想立即开始,则设置一个参数 - 'true')
HTH, --Pradeep
答案 4 :(得分:0)
创建另一个插件:
BundleListener
)。