2014-09-09 6 views
9

जब मैं जर्सी क्लाइंट से वेबटाइटल बनाने का प्रयास करता हूं तो मुझे निम्न अपवाद मिलता है।osgi में जर्सी-क्लाइंट का उपयोग करते समय त्रुटि - कोई जनरेटर प्रदान नहीं किया गया था

मेरे कोड

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

अपवाद स्टैक ट्रेस

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) 

क्या समस्या हो सकती है?

उत्तर

16

अपने classpath को जर्सी-ext-निर्देशिका से निम्नलिखित अभिलेखागार जोड़ें:।

hk2-api - * जार

hk2-लोकेटर - * जार

hk2-utils- *। .jar

javax इंजेक्षन - * जार

जर्सी-अमरूद -।। * जार

+0

मेरे पास एक ही समस्या है और इन सभी जार फ़ाइलों को मेरे क्लासपाथ में है लेकिन अभी भी अपवाद प्राप्त हो रहा है। मैंने यह भी देखा कि निम्नलिखित चेतावनी है: चेतावनी: HK2 ServiceLocatorGenerator –

+0

का डिफ़ॉल्ट कार्यान्वयन नहीं मिला है, मैंने एक ही समस्या का अनुभव किया और यह पता चला कि जार का संघर्ष था। तो इसे परिप्रेक्ष्य में रखने के लिए, मेरा रनटाइम ओएसजीआई है जहां यह ठीक चल रहा था, लेकिन जब मैं एक्लिप्स के माध्यम से सादा जावा क्लास का उपयोग कर जर्सी क्लाइंट को निष्पादित करने की कोशिश कर रहा था, तो यह अपवाद फेंक देगा। समाधान मेरे लिए काम किया गया था, मैंने ओएसजीआई द्वारा उपयोग की जाने वाली सभी क्लासपाथ निर्भरताओं को हटा दिया और मैंने इस उत्तर में वर्णित पुस्तकालयों को जोड़ा। इसके अलावा मुझे जर्सी क्लाइंट और जर्सी आम पुस्तकालयों को जोड़ना पड़ा। आशा है कि ये आपकी मदद करेगा। मेरी इच्छा है कि जर्सी वितरण सिर्फ उन्हें बंडल करेगा ताकि डेवलपर्स को खोजना पड़े। –

+0

मैं एचके 2-लोकेटर- * भूल गया।जार जो उपर्युक्त त्रुटि का कारण बनता है। जब मेरी समस्या हल हो गई। – Yergalem

6

एचके 2-लोकेटर और जावस्सिस्ट को अपने ओएसजीआई फ्रेमवर्क पर बंडलों के रूप में पंजीकृत करें।

जर्सी ओएसजीआई पर सेवाओं को खोजने के लिए एचके 2-लोकेटर का उपयोग करता है।

1

मेरे पास यह वही समस्या थी और मैं अंततः अपने बंडल को शुरू करके इसे हल कर सकता हूं जो फेलिक्स फ्रेमवर्क (ओएसजीआई-5.4) में स्तर 2 पर एंडपॉइंट प्रकाशित करने के लिए जर्सी का उपयोग करता है। मुझे यकीन है कि क्यों नहीं हूँ, लेकिन HK2-लोकेटर निर्भरता की तरह लगता है:

  • hk2-api-2.4.0-b10.jar -> स्तर 1
  • hk2-लोकेटर-2.4.0-b10.jar -> स्तर 1
  • hk2-utils-2.4.0-b10.jar -> स्तर 1
  • org.apache.servicemix.bundles.javax इंजेक्षन-1_2.jar -> स्तर 1
  • जर्सी-अमरूद -2.22.1.jar -> स्तर 1

बंडल से पहले शुरू करने की आवश्यकता है -> लेवल 2

एक बार जब आप अपने बंडल इस नए स्तर पर शुरू करने के लिए सेट करें, फिर करने के लिए फेलिक्स कंसोल में frameworklevel 2 निष्पादित करने के लिए सुनिश्चित करें कि

  • अपने-बंडल-1.0.0.jar: जो उन्हें का उपयोग करता है उस स्तर के नीचे बंडल शुरू करें। ढांचे को पुनरारंभ करें और यह काम करेगा।

+0

इसने फेलिक्स में मेरे लिए यह मुद्दा तय किया। –

संबंधित मुद्दे

 संबंधित मुद्दे