मैं जावा आरएमआई क्लाइंट/सर्वर ऐप बनाने की कोशिश कर रहा हूं। मैं अपने ऐप के सर्वर पक्ष को शुरू करने में समस्याएं चला रहा हूं, क्योंकि यह ऐप के सर्वर पक्ष को शुरू करने का प्रयास करते समय Registry.bind() विधि पर कॉल के दौरान ClassNotFoundException में चल रहा है।मैं श्रेणीबद्धता को कैसे सेट करूं जो rmiregistry उपयोग करता है?
मैंने यहां सरल ट्यूटोरियल के साथ शुरुआत की: http://docs.oracle.com/javase/1.5.0/docs/guide/rmi/hello/hello-world.html। उन निर्देशों का पालन करने के बाद, शुरुआत में यह क्लास नॉटफाउंड अपवाद को शिकायत कर रहा था कि यह "example.hello.Hello" नहीं मिला। मैं ट्यूटोरियल में destDir निर्देशिका से rmiregistry शुरू करके इसे हल करने में सक्षम था, क्योंकि rmiregistry, जाहिर है, अपने क्लासपाथ के हिस्से के रूप में अपनी प्रारंभिक प्रारंभिक निर्देशिका का उपयोग करता है।
मैंने उसके बाद अपने अन्य टेस्ट ऐप पर शुरुआत की, और जब तक मैंने अपने सर्वर वर्ग में तीसरे पक्ष की जार फ़ाइलों का उपयोग शुरू नहीं किया तब तक मैं ठीक था। अब Registry.bind() क्लास नॉटफाउंड अपवाद फेंकता है यदि मेरा सर्वर क्लास किसी भी जार फ़ाइल में कुछ भी संदर्भित करता है क्योंकि rmiregistry ऐप उन जार फ़ाइलों के बारे में नहीं जानता है।
जहां तक मैं कह सकता हूं, rmiregistry किसी भी प्रकार के क्लासपाथ स्टार्टअप तर्क को स्वीकार नहीं करता है, इसलिए मैं सोच रहा हूं कि मैं इसे कैसे बता सकता हूं कि मैं किस क्लासपाथ को स्वीकार करना चाहता हूं। यहां ट्यूटोरियल के मुताबिक: http://docs.oracle.com/javase/tutorial/rmi/running.html, "आपको यह सुनिश्चित करना होगा कि आप जिस शेल या विंडो में rmiregistry चलाएंगे, उसके पास नहीं क्लास्स्पैट पर्यावरण परिवर्तनीय सेट है या इसमें क्लासस्पैट पर्यावरण चर है जिसमें किसी भी वर्ग के पथ शामिल नहीं हैं कि आप अपने दूरस्थ वस्तुओं के ग्राहकों को डाउनलोड करना चाहते हैं। " यह मेरी जरूरत के विपरीत की तरह लगता है ... या क्या मैं इसे गलत तरीके से पढ़ रहा हूं? क्या किसी को आरएमआई क्लाइंट/सर्वर शुरू करने में कोई सफलता मिली है जो तीसरे पक्ष के जार (कॉमन्स-आईओ, कॉमन्स-लॉगिंग, और आरएमआईओ, मेरे मामले में) का उपयोग करता है?
यह विंडोज़ पर है, वैसे भी।
अद्यतन मैं इसे चारों ओर एक रास्ता मिल गया। नीचे मेरा जवाब देखें।
अच्छा काम ट्रॉय। एक दोस्ताना अनुस्मारक के रूप में, क्या आप अपने आप को प्रश्न का उत्तर पोस्ट कर सकते हैं और फिर उस उत्तर को स्वीकार कर सकते हैं ताकि हम इस प्रश्न को बंद कर सकें? साथ ही, यदि आप अपनी समस्या को ठीक करते हैं तो आपको पिछले प्रश्नों के उत्तर स्वीकार करने की आवश्यकता है। – Zecas