2017-06-06 20 views
8

में संसाधन फ़ोल्डर से फ़ाइल पढ़ें मैं स्प्रिंग बूट और json-schema-validator का उपयोग कर रहा हूं। मैं resources फ़ोल्डर से jsonschema.json नामक एक फ़ाइल को पढ़ने की कोशिश कर रहा हूं। मैंने कुछ अलग तरीकों की कोशिश की है लेकिन मैं इसे काम नहीं कर सकता। यह मेरा कोड है।स्प्रिंग बूट

ClassLoader classLoader = getClass().getClassLoader(); 
File file = new File(classLoader.getResource("jsonschema.json").getFile()); 
JsonNode mySchema = JsonLoader.fromFile(file); 

यह फ़ाइल का स्थान है।

enter image description here

और यहाँ मैं classes फ़ोल्डर में फ़ाइल देख सकते हैं।

enter image description here

लेकिन जब मैं कोड को चलाने मैं निम्नलिखित त्रुटि मिलती है।

jsonSchemaValidator error: java.io.FileNotFoundException: /home/user/Dev/Java/Java%20Programs/SystemRoutines/target/classes/jsonschema.json (No such file or directory) 

मैं अपने कोड में क्या गलत कर रहा हूं?

+0

आप इस कोशिश कर सकते हैं? 'क्लासलोडर क्लासलोडर = getClass()। GetClassLoader(); \t \t जेसननोड mySchema = JsonLoader.getJson (classLoader.getResourceAsStream ("jsonschema.json")); ' – harshavmb

उत्तर

9

बहुत कम उत्तर: आप कक्षा के बजाय लक्षित वर्ग लोडर के दायरे में अपनी संपत्ति की तलाश में हैं। यह काम करना चाहिए:

File file = new File(getClass().getResource("jsonschema.json").getFile()); 
JsonNode mySchema = JsonLoader.fromFile(file); 

इसके अलावा, इस देखें:

पी.एस. अगर एक मशीन पर परियोजना संकलित की गई है और उसके बाद किसी अन्य पर लॉन्च किया गया है या आप डॉकर में अपना ऐप चलाते हैं तो कोई समस्या हो सकती है। इस मामले में, आपके संसाधन फ़ोल्डर के पथ अमान्य हो सकते हैं। इस मामले में यह बेहतर होगा कार्यावधि में अपने संसाधनों के लिए पथ निर्धारित करने के लिए:

ClassPathResource res = new ClassPathResource("jsonschema.json");  
File file = new File(res.getPath()); 
JsonNode mySchema = JsonLoader.fromFile(file); 
+0

' getClass()। GetResource ("jsonschema.json") 'रिटर्न' शून्य '। मैंने 'क्लासपाथ रिसोर्स रेस = नया क्लासपाथ रिसोर्स ("jsonschema.json")' भी कोशिश की, जो सिर्फ 'jsonschema.json' देता है। क्या इसके साथ कुछ करने के लिए मैं वसंत बूट का उपयोग कर रहा हूँ? – g3blv

+0

नहीं, यह वास्तव में एक सामान्य दृष्टिकोण –

0

ही समस्या में फंस यह मेरे में मदद करता है

URL resource = getClass().getClassLoader().getResource("jsonschema.json"); 
JsonNode jsonNode = JsonLoader.fromURL(resource); 
+0

है, यह अधिक जानकारी के लिए दिए गए उत्तर जैसा ही है, यहां देखें https://stackoverflow.com/questions/14739550/difference-between-getclass-getclassloader-getresource-and-getclass -getres –