2016-04-08 16 views
0

org.dm.bundle için gradle OSGi eklenti geçildiğinde:hata kuvars numune iç içe-kavanoz örnekte eklentisi

https://github.com/paulvi/osgi-run/tree/master/osgi-run-test/quartz-sample-nested-jars

hata, yani paket Felix aktif değildir sonuçlandı ve can Başlamadı.

Neden paket osgi.wiring.package = commonj.work'e ihtiyaç duyuyor? Bu nereden geliyor? Projenizin Gradle bağımlılığı olsaydı, osgi-run bunu çalışma zamanına ekleyebilirdi ... belki de Gradge deps'de bir osgiRuntime 'org: commonj.work: version' bildirimi eklemelisiniz?

tam günlük

# parseClassFile(): path=org/xml/sax/ErrorHandler.class resource=:file:/C:/Program%20Files/Java/jdk1.8.0_74/jre/lib/rt.j 
ar!/org/xml/sax/ErrorHandler.class: 
:quartz-sample-nested-jars:createOsgiRuntime 
> Building 83% > :quartz-sample-nested-jars:runOsgi 

:quartz-sample-nested-jars:runOsgi 
org.osgi.framework.BundleException: Unable to resolve com.athaydes.gradle.osgi.quartz-sample-nested-jars [6](R 6.0): mis 
sing requirement [com.athaydes.gradle.osgi.quartz-sample-nested-jars [6](R 6.0)] osgi.wiring.package; (osgi.wiring.packa 
ge=commonj.work) Unresolved requirements: [[com.athaydes.gradle.osgi.quartz-sample-nested-jars [6](R 6.0)] osgi.wiring.p 
ackage; (osgi.wiring.package=commonj.work)] 
ERROR: Bundle com.athaydes.gradle.osgi.quartz-sample-nested-jars [6] Error starting file:/D:/Workspaces/GitHub/osgi-run/ 
osgi-run-test/quartz-sample-nested-jars/build/osgi/bundle/quartz-sample-nested-jars-1.0.jar (org.osgi.framework.BundleEx 
ception: Unable to resolve com.athaydes.gradle.osgi.quartz-sample-nested-jars [6](R 6.0): missing requirement [com.athay 
des.gradle.osgi.quartz-sample-nested-jars [6](R 6.0)] osgi.wiring.package; (osgi.wiring.package=commonj.work) Unresolved 
requirements: [[com.athaydes.gradle.osgi.quartz-sample-nested-jars [6](R 6.0)] osgi.wiring.package; (osgi.wiring.packag 
e=commonj.work)]) 
     at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:4111) 
     at org.apache.felix.framework.Felix.startBundle(Felix.java:2117) 
     at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1371) 
     at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308) 
     at java.lang.Thread.run(Thread.java:745) 
____________________________ 
Welcome to Apache Felix Gogo 

> Building 83% > :quartz-sample-nested-jars:runOsgilb 
g! g! g! START LEVEL 1 
    ID|State  |Level|Name 
    0|Active  | 0|System Bundle (5.4.0)|5.4.0 
    1|Active  | 1|c3p0 (0.9.1.1)|0.9.1.1 
    2|Active  | 1|Apache Felix Gogo Command (0.16.0)|0.16.0 
    3|Active  | 1|Apache Felix Gogo Runtime (0.16.2)|0.16.2 
    4|Active  | 1|Apache Felix Gogo Shell (0.12.0)|0.12.0 
    5|Active  | 1|quartz (2.2.1)|2.2.1 
    6|Installed | 1|com.athaydes.gradle.osgi.quartz-sample-nested-jars (1.0.0)|1.0.0 
    7|Active  | 1|slf4j-api (1.6.6)|1.6.6 
    8|Resolved | 1|slf4j-simple (1.6.6)|1.6.6 
> Building 83% > :quartz-sample-nested-jars:runOsgistart 6 
org.osgi.framework.BundleException: Unable to resolve com.athaydes.gradle.osgi.quartz-sample-nested-jars [6](R 6.0): mis 
sing requirement [com.athaydes.gradle.osgi.quartz-sample-nested-jars [6](R 6.0)] osgi.wiring.package; (osgi.wiring.packa 
ge=commonj.work) Unresolved requirements: [[com.athaydes.gradle.osgi.quartz-sample-nested-jars [6](R 6.0)] osgi.wiring.p 
ackage; (osgi.wiring.package=commonj.work)] 
> Building 83% > :quartz-sample-nested-jars:runOsgi 

açık sorunu https://github.com/renatoathaydes/osgi-run/issues/36 (gerçekten orada aittir) Sorun Export-Package talimatında bu içeren kuvars Paketin bildiriminde, gibi görünüyor

cevap

1

:

org.quartz.commonj; 
uses:="commonj.work,javax.naming,org.quartz.spi,org.slf4j"; 
version="2.2.1" 

Ve daha sonra, Import-Package talimatında, bu:

commonj.work;resolution:=optional 

Yani, org.quartz.commonj aktarmak için bu paket için sırayla, bu commonj.work ithal olması gerekir, ama bu OSGi şartname bunun gerçekleşmesi gerektiğini söylediklerini emin değilim bir isteğe bağlı ithalat ...

olduğunu Bu durumda, Şartname içinde bulmaya çalıştım ama bu duruma özel bir şey bulamadım ... Yorumum, paketin org.quartz.commonj paketini dışa aktarması gerektiğidir çünkü şartname yalnızca optional gereksinimlerinin bir paketin kablolama işleminden memnun olmadığına göre, isteğe bağlı ithalatlara dayanan, dışa aktarılan paketler hakkında, söyleyebildiğim kadarıyla bir şey söylemez.

bu sadece bildirim oluşturmak için Bnd çağırır osgi eklenti ile çalışır, ancak aynı zamanda Bnd çağırır org.dm.bundle ile değil, tüm Kavanoz oluşturmak için neden soru şu ... olduğunu

çalışan Felix'de, org.quartz.commonj paketinin kuartz demeti tarafından başarılı bir şekilde ihraç edildiğini ve diğer gruplara kablolama için kullanılabildiğini görebiliyorum, bu yüzden çalışmasına izin verilmesi gerektiğini düşünüyorum.

Bir hatayı org.dm.bundle ile veya doğrudan Bnd ile doldurmanızı öneririz. Eminim daha sağlam bir cevap verebileceklerinden emin olurlar ve eğer uygun görürlerse, bu soruna neden olabilecek herhangi bir hatayı düzeltebilirler.