首页 > 解决方案 > 在哪里可以找到并安装 org.osgi.framework 包?

问题描述

我正在尝试遵循本教程:

apache felix 教程 #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/osgtest.html

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

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

没有意义,因为我从karaf 下载站点下载的 karaf 安装中没有文件“karaf.jar” 。

在清单文件中,有一行:

Import-Package: org.osgi.framework

但是这个包似乎在 karaf 安装中不存在?

标签: javaosgiapache-karafapache-felix

解决方案


felix 教程已经过时了。

如果您想学习 OSGi,我可以推荐Apache Karaf 演示教程以及航路示例。

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

您不应该手动创建清单。而是使用像 maven-bundle-plugin 这样的插件来创建它。然后,您可以将激活器放置在您想要的任何位置,并且只需要给工具一个提示它在哪里。

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

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


推荐阅读