2013-05-02 4 views
5

मैं वर्तमान में इसे लोड करने के लिए Class.forName() का उपयोग कर जावा कक्षाएं लोड कर रहा हूं।दूरस्थ श्रेणी से जावा क्लास .forName()

clazz = Class.forName("interfaces.MyClass"); 

लेकिन अब मैं अलग निर्देशिका से कक्षाओं लोड करना चाहते हैं, मैं द्वारा

clazz = Class.forName("-cp \"C:/dir\" distantinterfaces.DistantClass"); 

classpath सेट करने के लिए कोई सफलता और ClassNotFoundException के साथ की कोशिश की है। दूर वर्ग के लिए पूर्ण पथ है:

C:/dir/distantinterfaces/DistantClass.class 

उत्तर

8

इसके लिए URLClassLoader का उपयोग करें। कोड कुछ के साथ कुछ हो सकता है:

File f = new File("C:/dir"); 
URL[] cp = {f.toURI().toURL()}; 
URLClassLoader urlcl = new URLClassLoader(cp); 
Class clazz = urlcl.loadClass("distantinterfaces.DistantClass"); 
3

या तो निर्देशिका classpath में है, और आप Class.forName() उपयोग कर सकते हैं (नहीं -cp आदेश पंक्ति विकल्प है जो केवल fuly योग्य नाम वर्गों को स्वीकार करता है, और), या यह classpath में नहीं है और फिर आपको कस्टम क्लास लोडर का उपयोग करना चाहिए।

आप यह नहीं कह रहे हैं कि आप वास्तव में क्या करना चाहते हैं (आप कक्षाओं को गतिशील रूप से क्यों लोड कर रहे हैं), लेकिन आपकी सबसे अच्छी शर्त क्लासपाथ में निर्देशिका रखना है।

1

आपको क्लासलोडर का एक उदाहरण बनाना है जो कक्षाओं के साथ निर्देशिका से अवगत है। stackoverflow questions tagged urlclassloader देखें।

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