2011-12-02 9 views
27

मेरे पास एक ऐसा कार्य है जहां मैं URL ऑब्जेक्ट में फ़ाइल लोड करने का प्रयास कर रहा हूं, क्योंकि उदाहरण प्रोजेक्ट ने ऐसा कहा था।एक स्थिर संदर्भ से getclass()। GetResource() कैसे प्राप्त करें?

public class SecureFTP { 

    public static void main(String[] args) throws IOException , ClassNotFoundException, SQLException , JSchException, SftpException{ 
     File file = new File("/home/xxxxx/.ssh/authorized_keys"); 
     URL keyFileURL = this.getClass().getClassLoader().getResource(file); 

मैं SecureFTP.class.getResource उपयोग करने की कोशिश, लेकिन यह अभी भी यह संकलन नहीं कर सका।

मैं जावा के लिए बिल्कुल नया हूं, इसलिए मुझे पता है कि मैं कुछ गलत कर रहा हूं।

उत्तर

5

कि लाइन यह संकलन नहीं कर सकते हैं की जगह ले सकता कक्षापथ)। File के साथ इसका उपयोग करने का कोई मतलब नहीं है। अगर आप एक फाइल खोलना चाहते हैं, तो बस FileInputStream या FileReader का उपयोग करें।

http://docs.oracle.com/javase/6/docs/api/java/lang/ClassLoader.html#getResource%28java.lang.String%29 देखें, और अगली बार आपके पास ऐसा प्रश्न होने पर संकलक त्रुटि संदेश शामिल करें।

53

मुख्य विधि एक स्थिर विधि है, इसलिए this (= वर्तमान ऑब्जेक्ट) तक पहुंचने का प्रयास नहीं किया जाएगा। क्योंकि getResource से (, पैरामीटर के रूप में एक संसाधन के नाम (एक String, और नहीं एक File) लेता है क्रम में वर्ग लोड हो रहा है प्रणाली का उपयोग करके संसाधन लोड करने के आप द्वारा

URL keyFileURL = SecureFTP.class.getClassLoader().getResource("/home/xxxxx/.ssh/authorized_keys"); 
+0

ओपी ने यही प्रयास किया। प्रश्न को और अधिक सावधानी से पढ़ें। समस्या यह है कि वह विधि के लिए एक स्ट्रिंग के बजाय एक फाइल पास कर रहा है। –

+0

आप सही हैं। मैंने अपना जवाब सही किया। हालांकि, OP ने getClassLoader कॉल – Robin

+0

के बिना SecureFTP.class.getResource की कोशिश की, आपकी विधि काम नहीं करेगी: getResource फ़ाइल सिस्टम से संसाधन लोड नहीं करता है, और संसाधन नाम/से शुरू नहीं होते हैं। मेरा जवाब पढ़ें। –

3
SecureFTP.class.getClassLoader().getResource(<<your resource name>>); 

चाल चलाना चाहिए!

5

पुराना सवाल लेकिन यह अभी तक नहीं कहा गया है। आप इसे एक स्थिर संदर्भ से कर सकते हैं:

ClassLoader classLoader = ClassLoader.getSystemClassLoader(); 
classLoader.getResource("filename");