一组OSGI捆绑包的独立GUI。

问题描述 投票:0回答:1

我有一组OSGI bundles(大约10个,那些有activeactivate声明的),它们被合并在一个.product文件中,共同组成一个java应用程序。这些bundles做了很多工作,但作为输出,它们只是在控制台打印一些重要的日志数据。

我想做的是--我想要一个简单的GUI,允许做3件事。1)一个激活所有这些捆绑程序的按钮(运行整个程序),2)一个窗口,我可以看到所有输出的日志数据,3)一个停用所有这些捆绑程序的按钮(结束程序)。

最初我计划使用e4 RCP。问题是,我不能在这个大项目中添加一个新的GUI插件(bundle),因为有一个bitness冲突。JNA在这些捆绑包中使用,它加载的是32位的本地库。这意味着,所有的东西也应该在32位的jvm上运行。但是,它运行在64位的eclipse目标平台上(从外部看,只有旧的equinox launcher仍然支持32位),而这个tp在我的公司里就像一个黄金标准,所以我不能把所有的捆绑包都换成32位的eclipse目标平台就可以了。然而,据我所知,你不能用32位的SWT库和equinox launcher做同样的事情,因为它们是eclipse的重要组成部分,应该和eclipse保持同样的位数。而且eclipse允许使用部分3264位的库,只有在< 4.10版本中才允许自动选择需要的库。我必须使用最新的eclipse版本。

这让我不得不寻找其他的概念来组织GUI和主逻辑之间的关系,尤其是当我可以单独做这件事的时候:例如,我在32位的目标平台上将GUI作为一个完全独立的项目进行编码,然后以某种方式从主项目中调用这些东西(在运行时?在这里我被卡住了。如果我在一个项目中有10个bundles,我如何从另一个(GUI)项目中激活它们?如何正确地组织这种通信,包括点击按钮等等?这真的可能吗?也许不是用e4,而是用一些其他的工具?

我在OSGI开发方面是个新手,如果我说了些奇怪的东西--提前道歉。

java eclipse user-interface osgi e4
1个回答
2
投票

显而易见的解决方案似乎是使用Swing?Swing没有本地依赖性。

你可以重定向 System.out/err 在Java内部,你可以很容易地捕获输出并在Swing组件中显示出来。你可以把这段代码放在自己的bundle中。

© www.soinside.com 2019 - 2024. All rights reserved.