জাভায় কাজ করার সময়, কোডের চূড়ান্ত এক্সিকিউশন প্রি-কম্পাইল্ড ক্লাসের মাধ্যমে হয়। আপনি জাভাতে একটি ক্লাস লিখলে, কম্পাইলার আপনার হাই-লেভেল সোর্স কোডকে বাইটকোড নামে একটি লো-লেভেল স্কিমে রূপান্তর করে। আপনার লেখা প্রতিটি ক্লাসের জন্য একটি প্রি-কম্পাইল্ড বাইটকোড ইনস্ট্যান্স তৈরি হয়। এই বাইটকোডে লো-লেভেল কোড থাকে যা জাভা ভার্চুয়াল মেশিনে রান করা যায়।
তবে, কখনও কখনও java টার্মিনাল কমান্ড চালালে could not find or load main class এরর দেখা যায়। এটি ইঙ্গিত দেয় আপনার ক্লাসের বাইটকোডের সাথে কিছু সমস্যা আছে। কিন্তু এটি কীভাবে ফিক্স করবেন? জানুন।
'could not find or load main class' এর মানে কী?
could not find or load main class এররটি ইঙ্গিত দেয় আপনার কোড ডিজাইনে কিছু সমস্যা আছে। এটি সাধারণত তখন হয় যখন আপনি টার্মিনালে জাভা প্রোগ্রাম চালানোর জন্য নিচের কমান্ডটি রান করেন:
java Test
এখানে "Test" হলো আপনার কোড সম্বলকারী ক্লাসের নাম। এই এরর মানে Test ক্লাসের বাইটকোড খুঁজে পাওয়া যায়নি।
'could not find or load main class' এরর কীভাবে ফিক্স করবেন?
এই এরর ফিক্স করার кільটি উপায় রয়েছে। এখানে কিছু প্রধান উপায় দেওয়া হলো:
টাইপো চেক করুন
এই এররের প্রথম সম্ভাব্য কারণ হতে পারে টাইপিং মিস্টেক। প্রোগ্রাম কলের সিনট্যাক্সে শুধু দুটি কীওয়ার্ড থাকে—"java" এবং ক্লাসের নাম—তাই মিস্টেক শুধু ক্লাসের নামে হতে পারে। আপনি ক্লাসের নামটি ডাবল-চেক করে টাইপিং মিস্টেক নেই কিনা দেখুন। প্রায়শই এই রকম এরর ছোটো স্পেলিং ও টাইপিং মিস্টেকের কারণেই হয়।
মান লিজিয়ে আপনি Test.java ফাইলে Test নামে একটি ক্লাস লিখেছেন। কমান্ড লাইনে এভাবেই কম্পাইল করবেন:
javac Test.java
তারপর এক্সিকিউট করবেন:
java Test
এটি আপনার প্রোগ্রাম ঠিকমতো চালাবে। কিন্তু যদি উপরের কমান্ডে "Test" মিসপেল করলে Could not find or load main class এরর দেখাবে।
অ্যাপ্লিকেশনে ভুল ক্লাসপাথ
অ্যাপ্লিকেশনের ক্লাসপাথ (CLASSPATH) এই এররের কারণ হতে পারে। ক্লাসপাথ একটি এনভায়রনমেন্ট ভেরিয়েবল যা সিস্টেমে ইউজার ক্লাসের লোকেশন নির্দেশ করে। যে ডিরেক্টরি ক্লাসপাথ নির্দেশ করে সেখানে একাধিক প্রি-রিটেন ক্লাস থাকে যা আপনি সরাসরি ইম্পোর্ট করতে পারেন।
যদি ক্লাসপাথ ভুল লোকেশন নির্দেশ করে, তবে JVM আপনার খোঁজা ক্লাসটি কখনো পাবে না এবং could not find or load main class এরর থ্রো করবে।
কখনও কখনও ক্লাসপাথে আপনার প্রোগ্রামের নির্ভরশীল সকল সিস্টেম ক্লাস থাকে না। মানে আপনি এমন একটি প্যাকেজ থেকে ক্লাস ইম্পোর্ট করতে চাচ্ছেন যা আপনি এখনও ডাউনলোড বা সেটআপ করেননি। সেক্ষেত্রেও এই এরর দেখা যাবে।
ক্লাসটি ভুল প্যাকেজে ডিক্লেয়ার করা হয়েছে
যদি আপনার সোর্স কোড ফাইলের শীর্ষে লেখা প্যাকেজের নাম সেই প্যাকেজ/মডিউলের সাথে মিলে না যেটা ক্লাসটি ডিক্লেয়ার করা হয়েছে। অধিকাংশ IDE লিন্টিং প্রসেসে এরর দেখিয়ে এটি সহজেই ধরতে সাহায্য করে। কিন্তু যদি চোখে না পড়ে, তবে উপরের এরর হবে।
সেরা সমাধান হলো সবসময় চেক করা যে ক্লাসের প্যাকেজের নাম সঠিক প্যাকেজকে পয়েন্ট করছে কিনা। IntelliJ বা VSCode-এর মতো এডভান্সড IDE ব্যবহার করলে লিন্টিং ইনেবল রাখুন।
উদাহরণস্বরূপ, নিচের ক্লাসটি project/src/com/foo/bar-এ স্টোর করা আছে:
package com.foo.baz;
class Bar { // Some code here }
এখানে প্যাকেজ পয়েন্ট করছে com/foo/baz-এ, কিন্তু ক্লাসটি আসলে com/foo/bar-এ স্টোর করা আছে। এটি ফিক্স করতে প্যাকেজ স্টেটমেন্ট আপডেট করুন:
package com.foo.bar; class Bar { // Some code here }
উপসংহার
এই আর্টিকেলে আমরা দেখেছি জাভাতে Could not find or load main class কী, কেন এটি হয়, এবং এটি ফিক্স করার কিছু প্রধান উপায়। জাভা প্রোগ্রাম লিখতে থাকলে এই এরর وقت খানিক কাজে আসতে পারে। এরর মেসেজ ভয়ঙ্কর লাগলেও এটি সমাধান করা খুব কঠিন নয়। শুধু চেক করুন যে আপনি যে ক্লাসটি খুঁজছেন সেটি সঠিক লোকেশনে আছে কিনা।