मैं अपने जावा प्रोजेक्ट के संकलित जार में एक पैकेज के भीतर से एक पाठ फ़ाइल लोड कर रहा हूं। प्रासंगिक निर्देशिका संरचना इस प्रकार है:
/src/initialization/Lifepaths.txt
मेरा कोड एक Class::getResourceAsStream
को वापस करने के लिए कॉल करके एक फ़ाइल लोड करता है InputStream
।
public class Lifepaths {
public static void execute() {
System.out.println(Lifepaths.class.getClass().
getResourceAsStream("/initialization/Lifepaths.txt"));
}
private Lifepaths() {}
//This is temporary; will eventually be called from outside
public static void main(String[] args) {execute();}
}
प्रिंट आउट हमेशा प्रिंट होगा null
, चाहे मैं कुछ भी उपयोग करूं। मुझे यकीन नहीं है कि ऊपर काम नहीं करेगा, इसलिए मैंने भी कोशिश की है:
"/src/initialization/Lifepaths.txt"
"initialization/Lifepaths.txt"
"Lifepaths.txt"
न ही ये काम। मैंने इस विषय पर अब तक कई प्रश्न पढ़े हैं, लेकिन उनमें से कोई भी मददगार नहीं रहा है - आमतौर पर, वे बस रूट पथ का उपयोग करके फ़ाइलों को लोड करने के लिए कहते हैं, जो मैं पहले से कर रहा हूं। वह, या बस फ़ाइल को वर्तमान निर्देशिका (सिर्फ लोड ) से लोड करें , जो मैंने भी कोशिश की है। फ़ाइल को उपयुक्त नाम के साथ उपयुक्त स्थान पर JAR में संकलित किया जा रहा है। filename
मैं इसे कैसे हल करूं?
Lifepaths.class
। कहा जा रहा है, getClassLoader()
यह काम करने की अनुमति क्यों देता है? (इसके अलावा, एक उत्तर पोस्ट करने के लिए स्वतंत्र महसूस हो रहा है!)
Lifepaths.getClass()
? ऐसा कोई स्थिर विधि वस्तु में परिभाषित किया गया है ...
getResource(String)
। बीटीडब्ल्यू - मुझे हमेशा static
संदर्भ में काम करने के लिए उन समस्याओं में से एक था । मूल रूप से समस्या यह है कि प्राप्त क्लास लोडर जे 2 एसई वर्गों के लिए एक है। आपको संदर्भ वर्ग लोडर तक पहुंच प्राप्त करने की आवश्यकता है जो कि आवेदन के लिए अभिप्रेत है।