【问题标题】:javax.inject,version=[0.0,1) -- Cannot be resolvedjavax.inject,version=[0.0,1) -- 无法解析
【发布时间】:2017-04-09 20:26:51
【问题描述】:

是否有任何其他解决方法可以解决 OSGI 包中的 javax.inject,version=[0.0,1) -- Cannot be resolved 问题

我已经尝试了以下论坛中提供的所有方法。但我的捆绑包仍然没有解决。

我正在使用 AEM 6.2 + Java 版本:1.8.0_121 + Apache Maven 3.3.9 和 archetypeVersion=10

我的代码可以在我的GDrive找到

http://help-forums.adobe.com/content/adobeforums/en/experience-manager-forum/adobe-experience-manager.topic.html/forum__fikl-ive_just_updatedfro.html

【问题讨论】:

  • 您的 AEM 实例在 javax.inject 的包依赖项 (localhost:4502/system/console/depfinder) 中显示什么?
  • @i.net 它是<dependency> <groupId>org.apache.geronimo.specs</groupId> <artifactId>geronimo-atinject_1.0_spec</artifactId> <version>1.0</version> <scope>provided</scope> </dependency>

标签: aem osgi-bundle javax aem-6


【解决方案1】:

在核心 pom.xml 文件中,为“javax.inject”添加 Import-Package 标签,并带有“version=0.0.0,* " 在 "org.apache.felix" 插件标签中,如下所示 [在 AEM 6.2 上测试完美运行]

<plugin>
  <groupId>org.apache.felix</groupId>
  <artifactId>maven-bundle-plugin</artifactId>
  <extensions>true</extensions>
  <configuration>
    <instructions>
      <!--
       <Embed-Dependency>
          artifactId1,artifactId2;inline=true
       </Embed-Dependency>
      -->
      <!-- Import any version of javax.inject, to allow running on multiple versions of AEM -->
      <Import-Package>javax.inject;version=0.0.0,*</Import-Package>

      <Sling-Model-Packages>
        com.next.sample_test_impl.core
      </Sling-Model-Packages>
    </instructions>
  </configuration>
</plugin>

【讨论】:

    【解决方案2】:

    删除下面的依赖

    <dependency>
    <groupId>org.apache.geronimo.specs</groupId>
    <artifactId>geronimo-atinject_1.0_spec</artifactId>
    <version>1.0</version>
    <scope>provided</scope>
    

    来自父子(bundle)pom.xml,因为 javax.inject.inject 也是由这个依赖导出的。所以你的代码正在考虑这个依赖而不是

         <dependency>
               <groupId>org.apache.geronimo.specs</groupId>
               <artifactId>geronimo-atinject_1.0_spec</artifactId>
               <version>1.0</version>
               <scope>provided</scope>
           </dependency>
    

    因此,如果您删除 sling.model.api 依赖项,它将采用正确的依赖项。

    【讨论】:

    • 谢谢,经过这么多修改 pom 文件的重建后,终于发现它可以与 &lt;dependency&gt;&lt;groupId&gt;org.apache.sling&lt;/groupId&gt;&lt;artifactId&gt;org.apache.sling.models.api&lt;/artifactId&gt;&lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.sling&lt;/groupId&gt; &lt;artifactId&gt;org.apache.sling.models.impl&lt;/artifactId&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;javax.inject&lt;/groupId&gt; &lt;artifactId&gt;javax.inject&lt;/artifactId&gt; &lt;/dependency&gt; 在构建中强制使用,而其余 uber-jar 和 geronimo-atinject_1.0_spec jars 作为可选。即使两者一起工作。
    • @VAr 它仅适用于 o‌​rg.apache.sling.mode‌​ls.api 和 javax.inject 依赖项。
    猜你喜欢
    • 1970-01-01
    • 2017-04-12
    • 1970-01-01
    • 1970-01-01
    • 2017-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多