मैं अपनी कक्षाओं में से एक के लिए शाखा भविष्यवाणी लागू कर रहा हूं और मैं ग्रहण में अपने स्रोत फ़ोल्डर से फ़ाइलों को पढ़ने की कोशिश कर रहा हूं लेकिन किसी कारण से यह फाइलों को खोलने में सक्षम नहीं है। मैंने इसे पहले ठीक उसी प्रक्रिया के साथ किया है इसलिए मुझे यकीन नहीं है कि क्या अलग है।

ट्रेसफाइल कमांड लाइन से सेट है और अगर मैं "इनपुट" प्रिंट करता हूं, तो यह सही फ़ाइल पथ का प्रिंट आउट लेगा और मैंने पुष्टि की है कि यह मैन्युअल रूप से है।

ClassLoader loader = BiModalPredictor.class.getClassLoader();
File input = new File(loader.getResource(traceFile).getFile());
Scanner fin = new Scanner(input);

क्या कोई अंतर्दृष्टि है कि ऐसा क्यों हो रहा है? मैंने ग्रहण को फिर से शुरू करने, फाइलों को रीफ्रेश करने का प्रयास किया है, और मैंने इसे किसी अन्य प्रोग्राम पर भी परीक्षण किया है जो काम करता है। पता नहीं क्यों इसे यह फ़ाइल नहीं मिल रही है।

0
learning_this_now 31 मार्च 2020, 03:37

1 उत्तर

सबसे बढ़िया उत्तर

क्लासपाथ पर संसाधन, यानी क्लासलोडर्स के माध्यम से उपलब्ध getResource विधि, फाइल सिस्टम पर फाइल नहीं होगी जब आपका एप्लिकेशन एक जार फाइल के रूप में तैनात किया जाता है, या सामान्य रूप से तैनात किया जाता है। ऐसे संसाधनों के साथ File का उपयोग न करें, इसके बजाय getResourceAsStream संसाधन सामग्री तक पहुंचने के लिए।

इसके अलावा, आपका कोड गलत है। getResource() एक URL लौटाता है. यदि आप किसी URL से File ऑब्जेक्ट चाहते हैं, तो आपको new File(uri), जहां URI url.toURI().

File input = new File(loader.getResource(traceFile).toURI());
0
Andreas 31 मार्च 2020, 00:53