我已经创建了一个应用程序,现在我希望它准备好一个插件。我决定使用 Apache Felix,在阅读了教程之后,我不确定这是否是我想要的选择。
我想更改我的应用程序,以便它在 /plugins 文件夹的开头 Bundles 加载,并将每个 Bundle 作为 JMenuItem 添加到 JMenu。我本可以使用 ClassLoader 完成它,但我认为 OSGi 正是我想要的,但后来我遇到了一些问题:
OSGi 有一个命令行,但我需要在我的应用程序中实现它,无需任何用户交互,在代码中硬编码其默认行为。
Bundle 在开始时调用的 Bundle (
start()
以及从 Bundlestop()
继承的方法org.osgi.framework.BundleActivator
)的行为,但我实际上希望我的应用程序对 Bundle 执行某些操作,而不是使用 Bundle 对应用程序执行某些操作。
那么你能告诉我,是否可以使用 OSGi(等 Apache Felix)来实现它,或者我应该使用 ClassLoader 实现它,然后将 .jar 插件的 Main Class 显式转换为 JMenuItem 并将其添加到我的 JMenu 中(更糟糕的是,因为它不支持应用程序的动态变化,也不给我学习OSGi的机会)。
编辑:我正在考虑类似: http: //karussell.wordpress.com/2009/09/16/plugable-swing-a-hello-world-osgi-example/,但我找不到任何教程。