在哪里可以找到并安装 org.osgi.framework 包?

Where to find and install org.osgi.framework package?

我正在尝试学习本教程:

apache felix tutorial #1

但是我不明白目录结构。我在哪里放置 Activator.java 文件?相对于 Activator.java 文件,我应该在哪里放置 MANIFEST.MF?

在本教程中,当我尝试编译 Activator.java 文件时,出现 org.osgi.framework 不存在的错误。我在哪里可以得到 org.osgi.framework 包,它应该安装在哪里? javac build 命令如何知道如何找到 org.osgi.framework 包?

我正在寻找解释什么是 Karaf/Felix 框架以及如何使简单示例起作用的教程。

我也尝试按照本教程进行操作:http://kevinboone.net/osgitest.html

但它已过时,Tick 包步骤的构建失败。具体来说,命令:

javac -d target/tick/classes -classpath /path/to/karaf/lib/karaf.jar src/net/kevinboone/osgitest/tick/*.java

没有意义,因为我的 karaf 安装中没有从 karaf download site 下载的文件 "karaf.jar"。

在清单文件中,有一行:

Import-Package: org.osgi.framework

但是karaf安装中好像没有这个包?

felix 教程非常过时。

如果您想学习 OSGi,我可以推荐 Apache Karaf demo and tutorials as well as the enroute 个示例。

还在回答问题。您可以在 osgi 核心规范 jar 和 felix jar 中找到包 org.osgi.framework。因此,在编译期间,这些 jar 之一需要位于类路径中。

您不应手动创建清单。而是使用像 maven-bundle-plugin 这样的插件来创建它。然后,您可以将 Activator 放在任何您想要的地方,只需向工具提示它所在的位置即可。

不要在 Activator 和其他低级 OSGi API 上投入太多时间。它们不是您编写代码的方式。相反,看看声明式服务。它允许使用注释连接您的 类 并处理困难的低级任务。

本教程的问题在于它们使用了非常低级的命令,例如 javac。如今,您应该始终使用 Maven 或 Gradle 等构建工具并在那里声明依赖项。我链接的教程和示例都提供了不错的构建,您也可以将其用于以后的生产代码。