我正在尝试按照本教程:
但我不明白目录结构。我在哪里放置Activator.java文件?哪里,相对于Activator.java文件,我放置MANIFEST.MF?
在本教程中,当我尝试编译Activator.java文件时,我收到org.osgi.framework不存在的错误。我在哪里可以获得org.osgi.framework包以及它应该安装在哪里? javac构建命令如何知道如何找到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
没有意义,因为我从kazxswpoi下载的karaf安装中没有文件“karaf.jar”。
在清单文件中,有一行:
karaf download site
但这个包似乎不存在于karaf安装中?
felix教程非常过时。
如果你想学习OSGi我可以推荐Import-Package: org.osgi.framework
和Apache Karaf demo以及tutorials的例子。
还是要回答这个问题。你可以在osgi core spec jar和felix jar中找到包enroute。因此,在编译期间,这些jar中的一个需要在类路径中。
您不应该手动创建清单。而是使用像maven-bundle-plugin这样的插件来创建它。然后,您可以将Activator放置在任何您想要的位置,只需要为工具提供一个提示。
不要在Activator和其他低级OSGi API上投入太多时间。它们不是您编写代码的方式。而是看看声明性服务。它允许使用注释来连接您的类,以处理困难的低级任务。
本教程的问题是他们使用像org.osgi.framework
这样的低级命令。现在你应该总是使用Maven或Gradle之类的构建工具并在那里声明依赖项。我链接的教程和示例都提供了很好的构建,您也可以将它们用于以后的生产代码。