这应该很简单。 HelpGUI 是一个非常简单的库:HelpGUI
在不使用任何 OSGI 框架的测试应用程序中,我可以毫不费力地加载包含在这个小型库中的演示。当我尝试在我的 OSGI 包中执行此操作时,我无法打开 InputStream。一定是因为我没有正确地将资源包含到我的包中,但我不确定如何。我能够构建一个 URL 对象并获得正确的文件路径。我的/docs/help/文件夹与我的包中的 src 文件夹处于同一级别,我不应该只调用:
MainFrame mainFrame = new MainFrame("/docs/help/", "plastic");
它有效果吗?为什么 OSGI 让这变得如此困难?有人可以尝试下载该库并获取演示以在 OSGI 包中弹出帮助窗口吗?
最佳答案
我试过了,没有遇到任何问题,我已经用 OSGi 版本和非 OSGi 版本制作了一个 git 仓库,并且都运行良好:
https://github.com/flyaruu/demo-helpgui
它们都有一个 eclipse 启动文件,您可以从运行菜单运行它们。
我需要做的唯一棘手的事情是必须添加这个开关:--launcher.secondThread 但这只是 MacOS 上的 Eclipse SWT/Swing 问题,我不知道你使用什么平台。
此外,也许有点棘手,Eclipse 不会强制您向 javax.* 包添加依赖项,而您确实应该这样做,否则独立的 OSGi 框架将不会加载包,即使 Eclipse 本身会加载。
您可以使用 PDE 导出 (Export -> Bundles and Fragments) 导出包,我还在 git 存储库中包含了它 (helpgui-osgi_1.0.0.201207310536.jar)。例如,您可以将包含的 bundle 放入 Felix 的“bundle ”文件夹中。
再简单不过了;-)
关于java - 我无法在我的 OSGI 包中加载 HelpGUI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11730826/