jar - Java.lang.Class.newInstance() throws IllegalArgumentException -
मेरे पास सरल प्रारंभ
वर्ग के साथ सार्वजनिक प्रारंभ (स्ट्रिंग [] पैरामीटर) कन्स्ट्रक्टर, जिसे मैं दूसरे चल जावा प्रोग्राम के स्तर से गैर-रननेबल JAR फ़ाइल से कॉल कर रहा हूं। रनटाइम पर्यावरण में सब कुछ काम कर रहा है क्लास
वर्ग को प्रारंभ करने के लिए, जब मैं नई इंस्टेंस () विधि को कॉल करने की कोशिश करता हूं, तब समस्या होती है। < / P> प्रारंभ
इस तरह दिखता है:
सार्वजनिक वर्ग प्रारंभ {सार्वजनिक प्रारंभ (स्ट्रिंग [] पैराम्स) {/ * मेनस्टेज ऑब्जेक्ट इनिशियलाइज़ * / मेनस्टेज चरण = नए मुख्य स्टैज (पैराम्स); मंच पर शो(); // मेनस्टेज को पैराम्स के बारे में कोई प्रतिबंध नहीं है। Length}}
और इसी तरह से मैं प्रारंभ
कॉल कर रहा हूं:
< कोड> स्ट्रिंग [] टी = नया स्ट्रिंग [] {"एक", "दो", "तीन"}; {Class & lt;? & Gt; क्लैज = क्लास। फोर्नाम ("org.plugin.Start"); / * नीचे दिए गए अपवाद * / clazz.getDeclaredConstructor (स्ट्रिंग []। वर्ग) .नवीन इंस्ट्रेंस ((ऑब्जेक्ट []) टी; } पकड़ (अपवाद ई) {e.printStackTrace (); }
यह उल्लेख के लायक है, कि यह अवैध अवैधता अपवाद
को छोड़कर सब कुछ ठीक हो जाता है, जिसका अर्थ है कि - JAR को रनटाइम क्लासपाथ, क्लास <कोड> स्टार्ट < / Code> समस्या के बिना कॉल कर रहा है, जब इसके निर्माता में कोई मापदंड नहीं है।
आपको वस्तुओं की एक सरणी बनाएं और इसमें t
डाल दें, जैसे:
clazz.getDeclaredConstructor (स्ट्रिंग []। वर्ग) .नवीन इंस्टेंस (नया ऑब्जेक्ट [] { टी});
कारण जावा आपको बताता है कि आपने पैरामीटर की एक अमान्य संख्या पारित की है, यह है कि आपका कोड t
से गुजरता है, तीन के साथ एक सरणी तत्व, एक निर्माता के लिए जो एक सरणी पैरामीटर लेता है दूसरे शब्दों में, आप एक अतिरिक्त स्तर का संकेत नहीं दे रहे थे, क्योंकि पैरामीटर जो आप विधियों या कन्स्ट्रक्टर को पास करते हैं, उन्हें Object []
में लपेटा जाना चाहिए, जिसमें एक पैरामीटर प्रति फ़ंक्शन पैरामीटर है।
Comments
Post a Comment