SORU
26 HAZİRAN 2013, ÇARŞAMBA


Neden kullanır kısıtlamaları iki zincir aynı paketteki son ne zaman ihlal ediliyor?

Dört demetleri var, tek bir bilgi içeren her. Demetleri

  • com.example.foo.fragment com.example.bar ithalat app
  • com.example.foo;uses:=com.example.foo.cfg ihracat foo
  • com.example.foo.fragment com.example.foo.fragment.cfg;uses:=com.example.foo.fragment ihracat bir parçası foo bağlı foo.fragment
  • com.example.bar ihracat com.example.foo ithalat bar

Paket düzeyinde bağımlılık grafiği:

app -> bar
|       |
|       v
|      foo
|       |
v       v
foo.fragment

Bu paketleri tek seferde sadece iyi çalışır 7.2, JBoss kurulumu. Ama eğer app paket yüklersenizsonraDiğerleri, ya ilk kez ya da başarılı bir şekilde başlayan ve daha sonra onu kaldırdıktan sonra, şunlardan oluşur: kısıtlama ihlali kullanır

Caused by: org.osgi.service.resolver.ResolutionException: Uses constraint violation. Unable to resolve resource com.example.app [HostBundleRevision[com.example.app:0.0.
0]] because it is exposed to package 'com.example.foo.fragment' from resources com.example.foo [HostBundleRevision[com.example.foo:0.0.0]] and com.example.foo [HostBund
leRevision[com.example.foo:0.0.0]] via two dependency chains.

Chain 1:
  com.example.app [HostBundleRevision[com.example.app:0.0.0]]
    import: null
     |
    export: osgi.wiring.package=com.example.foo.fragment
  com.example.foo [HostBundleRevision[com.example.foo:0.0.0]]

Chain 2:
  com.example.app [HostBundleRevision[com.example.app:0.0.0]]
    import: null
     |
    export: osgi.wiring.package=com.example.bar; uses:=com.example.foo
  com.example.bar [HostBundleRevision[com.example.bar:0.0.0]]
    import: null
     |
    export: osgi.wiring.package=com.example.foo; uses:=com.example.foo.fragment
    export: osgi.wiring.package=com.example.foo.fragment
  com.example.foo [HostBundleRevision[com.example.foo:0.0.0]]
        at org.apache.felix.resolver.ResolverImpl.checkPackageSpaceConsistency(ResolverImpl.java:1142)
        at org.apache.felix.resolver.ResolverImpl.resolve(ResolverImpl.java:197)
        at org.jboss.osgi.resolver.felix.StatelessResolver.resolve(StatelessResolver.java:56)
        at org.jboss.osgi.framework.internal.ResolverImpl.resolveAndApply(ResolverImpl.java:137)
        at org.jboss.as.osgi.service.BundleLifecycleIntegration$BundleLifecycleImpl.activateDeferredPhase(BundleLifecycleIntegration.java:296)
        ... 31 more

Tam gösterir

app.jar/META-INF/MANIFEST.MF
----------------------------
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-SymbolicName: com.example.app
Import-Package: com.example.foo.fragment,com.example.bar
----------------------------
foo.jar/META-INF/MANIFEST.MF
----------------------------
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-SymbolicName: com.example.foo
Export-Package: com.example.foo;uses:="com.example.foo.cfg"
-------------------------------------
foo.fragment.jar/META-INF/MANIFEST.MF
-------------------------------------
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-SymbolicName: com.example.foo.fragment
Fragment-Host: com.example.foo
Export-Package: com.example.foo.fragment,com.example.foo.cfg;uses:="co
 m.example.foo.fragment"
----------------------------
bar.jar/META-INF/MANIFEST.MF
----------------------------
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-SymbolicName: com.example.bar
Export-Package: com.example.bar;uses:="com.example.foo"
Import-Package: com.example.foo

Tek başına Apache yukarıdaki hata Felix 4.2.1 çoğaltmak mümkün olmamıştır.

Bu davranışının sebebi nedir? Eğer foo.fragment bildirim Fragment-Host: com.example.foo satır silersem, app iyi hatasız yeniden. Bu 7.2 OLARAK JBoss bir hata değildir?

CEVAP
28 Ocak 2015, ÇARŞAMBA


Foo almak zorunda değilsin.app parçası olan bağımlılığı foo dan çözer. bu yüzden sadece Kaldır bağımlılık ve yeniden dağıtmak. Bu sorun, döngüsel bağımlılık nedeniyle.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BgirlNilaya

    BgirlNilaya

    29 EKİM 2008
  • InfinityWard

    InfinityWard

    19 EYLÜL 2006
  • Attempts at least

    Attempts at

    1 Ocak 2007