2015-12-01 9 views
5

Bir uzak repo'ya (jackrabbit-jcr-rmi kullanarak) bağlanmak için JackRabbit 2.11.1 kullanmaya çalışıyorum. Demetler, kaputun altında Apache Karaf 2.4/Felix 4.4'e sahip JBoss Fuse 6.2'de çalışıyor. Başlangıçta aşağıdaki istisnaları alıyorum. Eğer jackrabbit-bundle kullanmayı denediğimde "Eksik Kısıtlama: Import-Package: com.ibm.db2.jcc; version =" 0.0.0 "" Yani kafam karıştı, JackRabbit 2.x OSGi hazır ? ya da Sling veya Oak kullanmalı mıyım yoksa ....?OSGi hatalarını çalıştırırken hatalar 2.11 in Karaf 2.4/Felix 4.x

Caused by: org.osgi.framework.BundleException: Uses constraint violation. Unable to resolve bundle revision wrap_mvn_org.apache.jackrabbit_jackrabbit-core_2.11.1 [270.0] because it exports package 'org.apache.jackrabbit.core.config' and is also exposed to it from bundle revision org.apache.jackrabbit.jackrabbit-data [276.0] via the following dependency chain: 
wrap_mvn_org.apache.jackrabbit_jackrabbit-core_2.11.1 [270.0] 
import: (osgi.wiring.package=org.apache.jackrabbit.core.data.db) 
export: osgi.wiring.package=org.apache.jackrabbit.core.data.db; uses:=org.apache.jackrabbit.core.config 
export: osgi.wiring.package=org.apache.jackrabbit.core.config 
org.apache.jackrabbit.jackrabbit-data [276.0] 
at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:4006)[org.apache.felix.framework-4.4.1.jar:] 
at org.apache.felix.framework.Felix.startBundle(Felix.java:2045)[org.apache.felix.framework-4.4.1.jar:] 
at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:976)[org.apache.felix.framework-4.4.1.jar:] 
at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:963)[org.apache.felix.framework-4.4.1.jar:] 
at org.apache.karaf.features.internal.FeaturesServiceImpl.doInstallFeatures(FeaturesServiceImpl.java:546)[9:org.apache.karaf.features.core:2.4.0.redhat-620133] 

korkunç bir hack ile çözüldü https://issues.apache.org/jira/browse/JCR-3917

+0

i http talimatları uygulayarak bir adım daha yakın var /aries.apache.org/modules/spi-fly.html ancak 'tüketen' bölümü (kavanozum) hala sağlayıcıyı görmüyor. Https://issues.apache.org/jira/browse/JCR-3917?focusedCommentId=15037547&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-15037547 – rwijngaa

+0

hakkındaki tek yoruma bakın. önermek, birlikte çalışmayan demetleri bir arada bulundurmanızdır. Özellikle wrap_mvn_org.apache.jackrabbit_jackrabbit-core_2.11.1'den şüphelenirim. Bu, bazı otomatik işlemlerle sarılmış gibi görünüyor ve bu yüzden de düşük kaliteli meta verilere sahip. –

cevap

1

Ayrıca bkz.

  • İhtiyacım olan bağımlılıkları kendi kavanozuma yerleştirmek.
  • ContextClassLoader öğesini sağlama sınıfının sınıf yükleyicisine ayarlayın (SPI işinin ilk etapta ne yapması gerekiyordu, işe yaramadı. Muhtemelen yaptığımdan daha fazla kavanoz sarmak zorunda kaldım çünkü).

Yani, maven-bohça-eklentisi i did:

<Embed-Dependency>jackrabbit-jcr2dav*,jackrabbit-jcr2spi*,jackrabbit-jcr-commons*;scope=compile;inline=false</Embed-Dependency> 

Ve tüketen kodunda: /:

ClassLoader originalContextClassLoader = Thread.currentThread().getContextClassLoader(); 
Thread.currentThread().setContextClassLoader(Jcr2davRepositoryFactory.class.getClassLoader()); 
// 
repository = JcrUtils.getRepository(uri); 
session = getSession(); 
// restore original classloader 
Thread.currentThread().setContextClassLoader(originalContextClassLoader); 
İlgili konular