Saturday, 15 May 2010

OSGi Bundle in Felix - ClassNotFoundException for Jetty class loaded by name -


pom.xml:

<पूर्व> & lt; आयात पैकेज & gt; Org.eclipse.jetty.websocket.server, * & lt; / आयात पैकेज & gt;

MANIFEST.MF:

  आयात-पैकेज: org.eclipse.jetty.websocket.server; संस्करण = "[9.2,10]"   

अपवाद में प्रवेश:

javax.servlet.ServletException: java.lang.ClassNotFoundException: org.eclipse.jetty.websocket.server.WebSocketServerFactory

फ़ेलिक्स वेब कंसोल:

आयातित पैकेज org.eclipse.jetty.websocket.server, version = 9.2.6 org.apache.felix.http.jetty से (39 )

org.eclipse.jetty.websocket.servlet.WebSocketServletFactory में प्रासंगिक कोड: <पूर्व> कक्षा & lt; WebSocketServletFactory & gt; Wssf = (कक्षा & lt; WebSocketServletFactory & gt;) लोडर। LoadClass ("org.eclipse.jetty.websocket.server.WebSocketServerFactory");

कृपया मुझे यह समझने में मदद करें कि मैं क्या गलत कर रहा हूं?

< P> मैंने एक ही समस्या में भाग लिया है, और फेलिक्स मेलिंग सूची पर पूछा जैसा कि बालाज़ द्वारा बताया गया है, उसे "लोडर" भाग के साथ करना होगा। धागे में कुछ उदाहरणों में एक यूआरएल शामिल है जिसमें ContextClassLoader प्रयोग किया जाता है।

पॉल के साथ धन्यवाद, मूल रूप से आपको इस तरह कुछ चाहिए:

  // वर्तमान कैश क्लासलोडर क्लासलोडर सीसीएल = थ्रेड। खरेंचट्रेड ()। GetContextClassLoader (); // जेट्टी क्लास लाउडर क्लास लोडर प्रदान करने वाले बंडल द्वारा उपयोग किए जाने वाले क्लासलोडर को खोजें; JettyBundle.getClassLoader (); // क्लासलोडर धागा सीरेंटट्रेड () सेट करें। SetContextClassLoader (क्लासलोडर); // सर्व सर्विस httpService.registerServlet ("/ servletName", नई MyWebSocketServlet (), रिक्त, रिक्त) रजिस्टर करें; // क्लासलोडर धागे को पुनर्स्थापित करें। कब्रटथ्रेड ()। SetContextClassLoader (सीसीएल);  

अधिक पूर्ण कोड के लिए उदाहरण देखें।


No comments:

Post a Comment