আমি ভাবছি কি পার্থক্য মধ্যে Class.getResource()
এবং ClassLoader.getResource()
?
সম্পাদনা: আমি বিশেষত জানতে চাই যে কোনও ক্যাচিং ফাইল / ডিরেক্টরি স্তরের সাথে জড়িত কিনা। "ক্লাস সংস্করণে ডিরেক্টরি তালিকাভুক্ত রয়েছে?"
AFAIK নিম্নলিখিত নিম্নলিখিত প্রয়োজনীয়ভাবে করা উচিত, কিন্তু তারা না:
getClass().getResource()
getClass().getClassLoader().getResource()
আমি এটি আবিষ্কার করেছি যখন কিছু রিপোর্ট প্রজন্মের কোডের সাথে ফিড করে যা WEB-INF/classes/
সেই ডিরেক্টরিতে বিদ্যমান ফাইল থেকে একটি নতুন ফাইল তৈরি করে । ক্লাস থেকে পদ্ধতিটি ব্যবহার করার সময়, আমি সেখানে ব্যবহৃত ফাইলগুলি ব্যবহার করে ব্যবহারের সময় সন্ধান করতে পারতাম getClass().getResource()
, তবে নতুন নির্মিত ফাইলটি আনার চেষ্টা করার সময় আমি একটি নাল বস্তুটি পেয়েছি। ডিরেক্টরি ব্রাউজ করা পরিষ্কারভাবে দেখায় যে নতুন ফাইল রয়েছে। ফাইলের নামগুলি "/myFile.txt" এর মতো একটি ফরোয়ার্ড স্ল্যাশ দিয়ে প্রম্পেন্ড করা হয়েছিল।
ClassLoader
সংস্করণ getResource()
অন্যদিকে উত্পন্ন ফাইল খুঁজে পাইনি। এই অভিজ্ঞতা থেকে দেখে মনে হয় যে ডিরেক্টরি তালিকা কিছুটা কেচিং চলছে। আমি কি ঠিক আছি, এবং যদি তাই হয় তবে এই নথিটি কোথায়?
থেকে এপিআই ডক্স উপরClass.getResource()
প্রদত্ত নামের সাথে একটি সংস্থান খুঁজে পায়। প্রদত্ত শ্রেণীর সাথে সম্পর্কিত সংস্থানগুলির সন্ধানের নিয়মগুলি শ্রেণীর সংজ্ঞায়িত শ্রেণি লোডার দ্বারা প্রয়োগ করা হয়। এই পদ্ধতিটি এই বস্তুর শ্রেণি লোডারকে প্রতিনিধিত্ব করে। যদি এই বস্তুটি বুটস্ট্র্যাপ শ্রেণীর লোডার দ্বারা লোড করা হয়, তবে পদ্ধতিটি ClassLoader.getSystemResource (java.lang.String) এর প্রতিনিধিত্ব করে।
আমার কাছে, এটি পড়ছে "Class.getResource সত্যিই তার নিজস্ব শ্রেণি লোডারের getResource () কল করছে"। যা করা একই হবে getClass().getClassLoader().getResource()
। তবে তা অবশ্যই হয় না। কেউ দয়া করে আমাকে এই বিষয়ে কিছু আলোকসজ্জা সরবরাহ করতে পারেন?