在AEM 6.2中使用mvn aem-project-archetype无法解析核心包 - 无法解析javax.inject

时间:2016-11-28 22:26:45

标签: osgi aem osgi-bundle sling

我尝试使用mvn aem-project-archetype(https://github.com/Adobe-Marketing-Cloud/aem-project-archetype)构建一个新项目,并在部署时,核心包显示状态为"已安装"但无法显示错误

javax.inject, version=[0.0,1) -- Cannot be resolved

enter image description here

我尝试按照此处的建议(https://github.com/Adobe-Marketing-Cloud/aem-project-archetype/issues/59

添加依赖项
 <dependency>
    <groupId>org.apache.geronimo.specs</groupId>
    <artifactId>geronimo-atinject_1.0_spec</artifactId>
    <version>1.0</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>javax.inject</groupId>
    <artifactId>javax.inject</artifactId>
    <version>1</version>
</dependency>

并尝试了此处列出的所有解决方案(http://help-forums.adobe.com/content/adobeforums/en/experience-manager-forum/adobe-experience-manager.topic.html/forum__fikl-ive_just_updatedfro.html),但他们没有解决。

在此感谢任何帮助。

3 个答案:

答案 0 :(得分:2)

在“ org.apache.felix 0.0.0,* ”的“ javax.inject ”的Import-Package标记>“插件标签如下:

<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.xyz.sample_test_impl.core</Sling-Model-Packages>
        </instructions>
     </configuration>
</plugin>

答案 1 :(得分:0)

经过一些研究,这里有一些解决方案:

  1. 评论&#34; @ Inject&#34;在HelloWorldModel.java中。这可能不太理想,但如果您不打算使用Sling Models,那么这将有效。

    @Model(adaptables=Resource.class)
    public class HelloWorldModel {
    
    //@Inject
    private SlingSettingsService settings;
    
    //@Inject @Named("sling:resourceType") @Default(values="No resourceType")
    protected String resourceType;
    
  2. 如果您要使用AEM 6.1或更高版本,请使用ACS's Lazybones AEM Template代替Archetype 10。这是与AEM一起使用的推荐模板,它更复杂,更新。

答案 2 :(得分:0)

尝试将您的依赖项列表与以下official sample project同步。事实上,在添加

之后,它对我有所帮助
        <dependency>
            <groupId>javax.inject</groupId>
            <artifactId>javax.inject</artifactId>
            <version>1</version>
            <scope>provided</scope>
        </dependency>

一般 pom.xml

        <dependency>
            <groupId>javax.inject</groupId>
            <artifactId>javax.inject</artifactId>
        </dependency>

到其子 ../core / pom.xml