1

这应该很简单。HelpGUI 是一个非常简单的库:HelpGUI

在一个不使用任何 OSGI 框架的测试应用程序中,我可以毫无问题地加载包含在这个小库中的演示。当我尝试在我的 OSGI 包中执行此操作时,我无法打开 InputStream。这一定是因为我没有正确地将资源包含到我的包中,但我不确定如何。我能够构造一个 URL 对象并获得文件的正确路径。我的 /docs/help/ 文件夹与我的包中的 src 文件夹处于同一级别,我不应该只调用:

MainFrame mainFrame = new MainFrame("/docs/help/", "plastic");

并让它工作?为什么 OSGI 让这变得如此困难?有人可以尝试下载库并让演示在 OSGI 包中弹出帮助窗口吗?

4

1 回答 1

3

我已经尝试过了,并没有遇到任何并发症,我制作了一个带有 OSGi 版本和非 OSGi 版本的 git repo,并且都运行良好:

https://github.com/flyaruu/demo-helpgui

它们都有一个 Eclipse 启动文件,您可以从运行菜单运行它们。

我需要做的唯一棘手的事情是必须添加这个开关:--launcher.secondThread 但这只是 MacOS 上的 Eclipse SWT/Swing 问题,我不知道你使用什么平台。

此外,可能很棘手,Eclipse 不会强制您将依赖项添加到 javax.* 包,这是您真正应该做的,否则独立的 OSGi 框架不会加载包,即使 Eclipse 本身也会加载。

您可以使用 PDE 导出 (Export -> Bundles and Fragments) 导出包,我还在 git repo 中包含了它 (helpgui-osgi_1.0.0.201207310536.jar)。例如,您可以将包含的捆绑包放入 Felix 的“捆绑包”文件夹中。

不能让它变得更容易;-)

于 2012-07-31T03:48:06.217 回答