我正在尝试遵循本教程:
但是我不了解目录结构。我在哪里放置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安装中似乎不存在此软件包?
答案 0 :(得分:4)
felix教程太过时了。
如果您想学习OSGi,我可以推荐Apache Karaf demo和tutorials以及enroute示例。
仍然要回答这个问题。您可以在osgi核心规范jar和felix jar中找到org.osgi.framework
软件包。因此,在编译过程中,其中一个jar必须位于类路径上。
您不应手动创建清单。而是使用像maven-bundle-plugin这样的插件来创建它。然后,您可以将Activator放置在所需的任何位置,只需要给该工具一个提示即可。
不要在Activator和其他低级OSGi API上投入太多时间。它们不是您应该编写代码的方式。相反,请看一下声明式服务。它允许使用注释来连接您的班级,从而解决了困难的低级任务。
本教程的问题在于它们使用了诸如javac
之类的底层命令。如今,您应该始终使用Maven或Gradle之类的构建工具,并在其中声明依赖项。我链接的教程和示例都提供了不错的构建,您也可以将它们用于以后的生产代码。