আমি আমার জাভা প্রকল্পের সংকলিত জেআর একটি প্যাকেজের মধ্যে থেকে একটি পাঠ্য ফাইল লোড করছি। সম্পর্কিত ডিরেক্টরি কাঠামোটি নিম্নরূপ:
/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"
এই কাজগুলির কোনোটাই নয়। আমি এখন পর্যন্ত এই বিষয়টিতে অসংখ্য প্রশ্ন পড়েছি , তবে তাদের কোনওটিই সহায়ক হয়নি - সাধারণত, তারা কেবল মূল পথ ব্যবহার করে ফাইলগুলি লোড করতে বলে, যা আমি ইতিমধ্যে করছি। এটি, বা কেবল বর্তমান ডিরেক্টরি থেকে ফাইলটি লোড করুন (স্রেফ লোড filename
), যা আমি চেষ্টা করেছি। ফাইলটি উপযুক্ত নাম সহ উপযুক্ত স্থানে জেআর-এ সংকলিত হচ্ছে।
আমি কীভাবে এটি সমাধান করব?
Lifepaths.class
। বলা হচ্ছে, কেন getClassLoader()
এটি কাজ করতে দেয়? (এছাড়াও, একটি উত্তর পোস্ট করতে নির্দ্বিধায় বোধ করুন!)
Lifepaths.getClass()
? অবজেক্টে এই জাতীয় কোনও স্থিতিশীল পদ্ধতি নেই ...
getResource(String)
। বিটিডাব্লু - আমার যেসব static
প্রসঙ্গে কাজ করতে হবে সে সম্পর্কে আমার সবসময় সমস্যা ছিল । সমস্যাটি মূলত যে প্রাপ্ত বর্গ লোডারটি জে 2 এস ক্লাসের জন্য তৈরি করা হয়। আপনার প্রসঙ্গ শ্রেণীর লোডার অ্যাক্সেস করা দরকার যা অ্যাপ্লিকেশনটির জন্য তৈরি।