【问题标题】:Where to find and install org.osgi.framework package?在哪里可以找到并安装 org.osgi.framework 包?
【发布时间】:2019-09-13 16:53:39
【问题描述】:

我正在尝试学习本教程:

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 download site 下载的 karaf 安装中没有文件“karaf.jar”。

在清单文件中,有一行:

Import-Package: org.osgi.framework

但是这个包好像在 karaf 安装中不存在?

【问题讨论】:

  • 来自离题部分:要求我们推荐或查找书籍、工具、软件库、教程或其他非现场资源的问题对于 Stack Overflow 来说是离题的,因为它们往往吸引固执己见的答案和垃圾邮件。相反,请描述问题以及迄今为止为解决该问题所做的工作。 因此,告诉我们您所遵循的教程已损坏,几乎无关紧要,我们无法解决。也许联系教程作者更新它,以便它再次工作
  • 使用 IDE 完成教程并不意味着您不会了解基础知识。有时它甚至可以帮助你。例如,我强烈建议您使用 Eclipse IDE。它将帮助您了解项目结构以及其他重要事项。
  • 关于您的问题我应该在哪里放置 Activator.java 文件?相对于 Activator.java 文件,我应该在哪里放置 MANIFEST.MF?...Activator.java 只需要在项目类路径中(通常是src/your/package/names)和MANIFEST.MF,在META-INF 文件夹中。
  • 我确实尝试联系教程作者。我没有收到回复。
  • 我也愿意学习使用 Eclipse 的教程。但是我还没有找到一个可行的。

标签: java osgi apache-karaf apache-felix


【解决方案1】:

felix 教程已经过时了。

如果你想学习 OSGi,我可以推荐 Apache Karaf demotutorials 以及 enroute 示例。

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

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

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

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

【讨论】:

    猜你喜欢
    • 2020-03-20
    • 2021-12-09
    • 2020-03-18
    • 2018-07-10
    • 1970-01-01
    • 2015-07-09
    • 1970-01-01
    • 2010-12-13
    • 2022-11-16
    相关资源
    最近更新 更多