一组 OSGI 包的单独 GUI

A separate GUI for a set of OSGI Bundles

我有一组 OSGI 包(大约 10 个,那些有 activate/deactivate 声明),它们被合并在一个 .product 文件下并一起构成一个 java 应用程序。这些包做了很多工作,但作为输出,它们只是在控制台上打印一些重要的日志记录数据。

我想做什么 - 我想要一个简单的 GUI,它允许 3 件事: 1) 用于激活所有这些捆绑包的按钮(运行 整个程序), 2) a window,在这里我会看到所有的输出日志数据, 3) 用于停用所有这些捆绑包的按钮(结束程序)。

最初我打算使用e4 RCP。问题是,我不能在这个大项目中只添加一个新的 GUI 插件(包),因为存在位数冲突:JNA 在这些包中使用并且它加载 32 位本机库。这意味着,所有的东西在 32 位 jvm 上也应该 运行。但是,它 运行s 在 64 位 eclipse 目标平台上(外部仅采用旧的 equinox 启动器,它仍然支持 32 位)并且这个 tp 在我的公司中就像一个黄金标准,所以我不能只切换到 eclipse 32所有捆绑包的位目标平台并快乐。但是,据我所知,您不能只对 32 位 SWT 库执行与使用 equinox 启动器相同的技巧,因为它们是 eclipse 的重要组成部分,应该保持与 eclipse 相同的位数。并且 eclipse 允许使用部分 32/64 位库,并可选择自动 select 仅适用于 < 4.10 版本的所需库。我必须使用最新的 eclipse 版本。

这让我开始寻找组织 GUI 和主要逻辑之间关系的其他概念,尤其是当我可以单独执行此操作时:f.e。我在我的 32 位目标平台中将我的 GUI 编码为一个完全独立的项目,然后以某种方式从主项目中调用这些东西(在 运行 时间内?)。在这里我被困住了。如果我在一个项目中有 10 个包,我怎么能从另一个 (GUI) 项目中 activate/deactivate 它们呢?如何通过点击按钮等正确地组织这种沟通?这真的可能吗?也许不是用 e4,而是用其他一些仪器?

我是 OSGI 开发的新手,如果我说了一些奇怪的话 - 提前道歉。

显而易见的解决方案似乎是使用 Swing? Swing 没有原生依赖项。

您可以在 Java 内重定向 System.out/err,这样您就可以轻松捕获输出并将其显示在 Swing 组件中。您可以将此代码放入其自己的包中。