【问题标题】:How the MANIFEST file is being generated in my AEM osgi bundle?MANIFEST 文件是如何在我的 AEM osgi 包中生成的?
【发布时间】:2018-12-07 11:50:03
【问题描述】:

我使用 aem-project-archetype 版本 13 创建了一个 maven 项目。 将捆绑包安装到 AEM 后,我在 felix 控制台中收到错误,其中 3 个导入的捆绑包 could not be resolved。 我试图找出这些被包含在我的清单文件中的位置,该文​​件位于目标/清单文件夹中。 这样我就可以修改各个捆绑包的版本。

我在 felix 控制台中遇到的错误,我的包处于已安装状态,未激活

org.apache.sling.api.resource,version=[2.10,3) -- Cannot be resolved
org.apache.sling.api.servlets,version=[2.2,3) -- Cannot be resolved
org.apache.sling.models.annotations,version=[1.4,2) -- Cannot be resolved

【问题讨论】:

    标签: osgi aem osgi-bundle manifest.mf


    【解决方案1】:

    当您开发 AEM 应用程序时,通常通过 Felix maven-bundle-plugin 生成 OSGI 包(和清单)。

    插件会根据您在所有 Java 代码中导入的 Java 包编写您的包 imports。如果您从 maven 依赖项导入,例如 Sling,该导入的版本将是来自 Sling 的包版本。

    您在这里遇到的问题可能是两个之一

    1. 您要导入的包在 OSGI(AEM 实例)中不存在
    2. maven 依赖项中的版本与 OSGI(AEM 实例)中的版本不匹配。因此 OSGI 无法解析您正在导入的版本。

    2. 很可能是这种情况,因为 sling 始终与 AEM 捆绑在一起。

    您可以做些什么来调试/修复?

    1. 你可以去http://localhost:4502/system/console/depfinder 并在那里尝试您的软件包以查看实际导出的版本 在 OSGI 中。
    2. 检查您在pom.xml 中拥有的依赖项的哪些版本 并确保 OSGI 版本在 清单进口。您可以使用maven dependency tree 列出所有 您的依赖项及其版本。
    3. 这是 AEM 特有的,如果您使用的是 uber-jar,请确保您是 为您正在使用的正确 AEM 实例使用正确的版本 正在运行。

    请注意,在清单导入中,[2.10,3) 范围表示它接受 2.10.0 和 3.0.0 之间的所有版本,但不包括 3.0.0。根据我的经验,Maven 捆绑插件将始终写入范围,其中 min 是您的 maven 依赖包版本,max 是下一个 major 版本。

    手动更改导入:

    不推荐这样做,并且有非常具体的用例,但您可以手动告诉捆绑插件要添加到导入的版本。请参阅捆绑插件文档中的 import-package instruction

    【讨论】:

    • 谢谢你!很大的帮助。是因为 uber jar 版本错误,我有 6.2 但 uber-jar 版本是 6.3。
    • 如果它确实回答了您的问题,请随时接受答案
    【解决方案2】:

    这些导入基于您编译的代码。没有一些讨厌的小花絮可以纠缠你。他们的目的是验证您运行的内容是否与您编译的内容兼容。我假设运行时的版本低于您的要求。这意味着您在 Maven 中设置的编译路径具有比您的运行时更高的版本。如果您可以运行您的代码,您可能会遇到 Class Not Found Exception 或 No such Method 错误。

    也许不是。但是,您可能会遇到更糟糕的情况,即事情不正确(在编译期间做出的承诺可能无法兑现)并且问题可能会在损坏完成后很久才发生。

    这些东西的存在是有充分理由的。它们就像插头上的接地针,可以保护您。

    如何解决这个问题?看看你的依赖关系。您必须确保针对低于或等于运行时中存在的版本进行编译。您可以先查看 POM 中的版本。如果这些版本不存在,请查看 Maven 使用的编译路径。

    替换清单中的数字就像锯掉插头上的接地插针,否则它无法安装在墙上……坏主意。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-22
      • 2015-07-26
      • 2017-04-27
      相关资源
      最近更新 更多