2014-09-09 28 views
9

Bir Jersey istemcisinden bir WebTarget oluşturmaya çalıştığımda aşağıdaki özel durumla karşılaşıyorum.Osgi'de jersey-client kullanılırken hata - Hayır jeneratör sağlandı

Kodum

Client client = ClientBuilder.newClient(); 
WebTarget baseTarget = client.target("http://127.0.0.1:9000"); 

İstisna yığın izleme

java.lang.IllegalStateException: No generator was provided 
and there is no default generator registered 
    at org.glassfish.hk2.internal.ServiceLocatorFactoryImpl.internalCreate(ServiceLocatorFactoryImpl.java:266) 
    at org.glassfish.hk2.internal.ServiceLocatorFactoryImpl.create(ServiceLocatorFactoryImpl.java:247) 
    at org.glassfish.jersey.internal.inject.Injections._createLocator(Injections.java:138) 
    at org.glassfish.jersey.internal.inject.Injections.createLocator(Injections.java:109) 
    at org.glassfish.jersey.internal.RuntimeDelegateImpl.<init>(RuntimeDelegateImpl.java:61) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526) 
    at java.lang.Class.newInstance(Class.java:374) 
    at javax.ws.rs.ext.FactoryFinder.newInstance(FactoryFinder.java:118) 
    at javax.ws.rs.ext.FactoryFinder.find(FactoryFinder.java:225) 
    at javax.ws.rs.ext.RuntimeDelegate.findDelegate(RuntimeDelegate.java:135) 
    at javax.ws.rs.ext.RuntimeDelegate.getInstance(RuntimeDelegate.java:120) 
    at javax.ws.rs.core.UriBuilder.newInstance(UriBuilder.java:95) 
    at javax.ws.rs.core.UriBuilder.fromUri(UriBuilder.java:119) 
    at org.glassfish.jersey.client.JerseyWebTarget.<init>(JerseyWebTarget.java:71) 
    at org.glassfish.jersey.client.JerseyClient.target(JerseyClient.java:185) 
    at org.glassfish.jersey.client.JerseyClient.target(JerseyClient.java:70) 

ne sorun olabilir?

cevap

16

Sınıfyolu Jersey-ext-dizinden aşağıdaki arşivleri ekleyin:.

hK2-api - * kavanozumuzu

hK2-locator - * kavanozumuzu

hK2-utils- *. .jar

javax-inject - * kavanozumuzu

forması-guava -.. * kavanozumuzu

+0

Aynı sorun var ve tüm bu jar dosyaları sınıf yolumda var ama yine de istisna oluyor. Ayrıca şu uyarıyı da fark ettim: UYARI: HK2 ServiceLocatorGenerator –

+0

'un varsayılan bir uygulaması bulunamıyor, ben aynı sorunu yaşadım ve bir kavanoz çatışması olduğu ortaya çıktı. Yani sadece perspektif içine koymak için, çalışma zamanım sadece iyi çalışıyordu ama Eclipse aracılığıyla düz java sınıfını kullanarak jarse istemci çalıştırmaya çalışırken, benim OSGI, istisna atardı. Çözüm benim için çalıştı OSGI tarafından kullanılan tüm classpath bağımlılıkları kaldırıldı ve bu cevapta belirtilen kütüphaneleri ekledim. Ayrıca Jersey Client ve Jersey Common kütüphanelerini de eklemeliydim. Umarım bu yardımcı olur. Jersey dağıtımının onları paketlemesini isterdim, böylece geliştiriciler aramak zorunda kalmazlar. –

+0

hk2-locator- * öğesini unuttum.Yukarıdaki hataya neden olan kavanoz. Eklediğimde problemim çözüldü. – Yergalem

6

OSGi çerçevenizde hk2-locator ve javassist'i paket olarak kaydedin.

Jersey, OSGi'deki hizmetleri bulmak için hk2-locator kullanıyor.

1

Aynı sorunu yaşadım ve sonunda, Felix Framework'de (OSGi-5.4) 2. seviyede bir son nokta yayınlamak için Jersey'i kullanan paketimi başlatarak çözebiliyordum. Neden emin değilim ama hK2-Locator bağımlılıkları gibi görünüyor:

  • hK2-api-2.4.0-b10.jar -> Seviye 1
  • hK2-bulucu-2.4.0-b10.jar -> Seviye 1
  • hK2-utils-2.4.0-b10.jar -> Seviye 1
  • org.apache.servicemix.bundles.javax-inject-1_2.jar -> Seviye 1
  • forması-guava -2.22.1.jar -> Level 1

Paketten önce başlamalıdır - Bu yeni seviyede başlamak için paket ayarladıktan sonra daha sonra Felix konsolunda frameworklevel 2 yürütmek emin olun> Düzey 2

  • your-bundle-1.0.0.jar: kim onları kullanan demetleri bu seviyenin altında başlatın. Çerçeveyi yeniden başlatın ve çalışacaktır.

+0

Bu, Felix'de benim için sorunu çözdü. –

İlgili konular