2017-04-15 79 views
0

當我嘗試通過maven將我的包部署到OSGi時,它顯示爲已安裝狀態。我的項目是多模塊,所以有兩個捆綁。我在標籤庫捆綁看到的是:包中未解決的約束

org.apache.felix.shell from org.apache.felix.shell (292) 
org.apache.jackrabbit.api,version=[2.3,3) from org.apache.jackrabbit.jackrabbit-api (65) 
org.apache.jackrabbit.api.jsr283.security -- Cannot be resolved 
org.apache.jackrabbit.api.security,version=[2.3,3) from org.apache.jackrabbit.jackrabbit-api (65) 
org.apache.jackrabbit.api.security.principal,version=[2.3,3) from org.apache.jackrabbit.jackrabbit-api (65) 
org.apache.jackrabbit.api.security.user,version=[2.3,3) from org.apache.jackrabbit.jackrabbit-api (65) 

檢查日誌後,我見下文:

14.04.2017 17:23:03.330 *ERROR* [FelixDispatchQueue] com.abc.MyPrj-services FrameworkEvent ERROR (org.osgi.framework.BundleException: Unresolved constraint in bundle com.abc.MyPrj-services [290]: Unable to resolve 290.0: missing requirement [290.0] osgi.wiring.package; (osgi.wiring.package=org.apache.jackrabbit.api.jsr283.security)) org.osgi.framework.BundleException: Unresolved constraint in bundle com.abc.MyPrj-services [290]: Unable to resolve 290.0: missing requirement [290.0] osgi.wiring.package; (osgi.wiring.package=org.apache.jackrabbit.api.jsr283.security) 
    at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:3896) 
    at org.apache.felix.framework.Felix.startBundle(Felix.java:1938) 
    at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1261) 
    at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:298) 
    at java.lang.Thread.run(Thread.java:745) 

我已經添加下面的依賴兩個模塊的taglib,服務。

<dependency> 
      <groupId>org.apache.jackrabbit</groupId> 
      <artifactId>jackrabbit-api</artifactId> 
      <version>2.5.2</version> 
      <scope>provided</scope> 
     </dependency> 

下面是標籤庫模塊的POM:

<plugin> 
       <groupId>org.apache.felix</groupId> 
       <artifactId>maven-bundle-plugin</artifactId> 
       <extensions>true</extensions> 
       <configuration> 
        <instructions> 
         <Export-Package> 
          com.mypkg.gwms.ra.tags.*;version=${project.version} 
         </Export-Package> 
         <Import-Package> 
          com.adobe.granite.*, 
          com.day.*, 
          javax.*, 
          org.apache.commons.*, 
          org.apache.sling.*, 
          org.apache.tika.*, 
          org.osgi.*, 
          org.w3c.dom.*, 
          org.xml.sax.*, 
          org.slf4j.*, 
          org.apache.felix.shell.*, 
          org.apache.jackrabbit.*, 
         </Import-Package> 
         <Include-Resource> 
          META-INF/${project.artifactId}-${project.version}.tld=${project.build.outputDirectory}/META-INF/${project.artifactId}-${project.version}.tld, 
          {maven-resources}, 
          {maven-dependencies} 
         </Include-Resource> 
         <Sling-Bundle-Resources> 
          /META-INF/tags 
         </Sling-Bundle-Resources> 
        </instructions> 
       </configuration> 
      </plugin> 

感謝,

+0

哪個版本的aem? – awd

+0

CQ5.6,我認爲這是因爲這一點。我有提供編譯錯誤的聲明org.apache.jackrabbit.api.security.JackrabbitAccessControlList。所以我補充說,jackrabbit api依賴。之後,構建成功,但org.apache.jackrabbit.api.jsr283.security - 無法解決 未解決。 –

回答

0

我被要求有2個相同的API的依賴關係,但與不同的版本。最新的一個是在服務模塊中使用。其他模塊taglib,正在尋找舊版本的相同的依賴關係來解決org.apache.jackrabbit.api.jsr283.security

爲了解決這個問題,我在我的pom.xml中添加了下面的語句。

<Import-Package> 
org.apache.jackrabbit.*;version=1.6.1 
</Import-Package> 

只導入1.6.1版本。這是有效的。

0

的這個錯誤告訴你,你還需要安裝一個軟件包,提供了包org.apache.jackrabbit.api.jsr283.security

如果它導出此包,則可以檢入包的清單。

0

您應該安裝一個包含org.apache.jackrabbit.api.jsr283.security包的包並將其導出到您的osgi容器。

相關問題