我有一个传统的swing应用程序,我需要使用JavaFX功能进行扩展。我一直在寻找使用OSGi来做到这一点(目前正在考虑Equinox)。
现有的遗留应用程序依赖于jar文件main.jar。这个jar保存了我创建的任何bundle所需的接口,以扩展功能,例如:添加新面板,菜单等
遗留应用程序在完成它的swing任务后,启动OSGi框架,注册实现main.jar中接口的服务,并安装任何bundle。
我试图将这个jar放在bundle中,编译很好,但是从OSGi注册表中检索服务时我得到了ClassCastException。
我不确定的是如何配置框架/包,以便遗留应用程序和osgi包都可以使用main.jar?
答案 0 :(得分:0)
您需要使用OSGi框架的系统包导出公开需要共享的包。您可以通过传递属性org.osgi.framework.system.packages.extra
来完成此操作。
前段时间我写了一篇关于嵌入OSGi的blog post,它涵盖了内部OSGi包和外部Java应用程序之间共享包和服务等方面。