java - 我无法在我的 OSGI 包中加载 HelpGUI

标签 java resources stream osgi bundle

这应该很简单。 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/

相关文章:

java - 共享 Java 对象流

java - 使用 Java 生成所需范围内的随机数

java - Android Studio 在项目同步期间抛出异常

使用 Flume/Hadoop 时 Ubuntu 中的 Java 内存不足异常

java - 嗨,我试图让我的 if 语句等于多个数字

stream - 如何通过 ffmpeg 保存 RAW rtp 输出文件

python - 对空列表进行 for 循环实际上会花费时间/资源吗?

java - 在Java中获取资源文件夹中的文件

c# - 如何读取 Build-Action : Resource items

c++ - 算术指针和 fstream C++