কম্পিউটার টিউটোরিয়াল

জাভাতে 'Cannot find symbol' এরর হওয়ার কারণ এবং সমাধান

"Cannot find symbol" কম্পাইল টাইম এরর তখন দেখায় যখন কম্পাইলার কোনো আইডেন্টিফায়ার (ক্লাস, মেথড, ভেরিয়েবল) চেনে না পারে। এটি সাধারণত ইমপোর্ট বা স্কোপ সমস্যার কারণে হয়।

প্রধান কারণসমূহ

  • ইমপোর্টmissing: ব্যবহৃত ক্লাস/ইন্টারফেস ইমপোর্ট করা হয়নি।
  • ভুল প্যাকেজ/ক্লাস নাম: ইমপোর্ট স্টেটমেন্টে স্পেলিং ভুল বা কেস মিসম্যাচ।
  • ক্লাসপথে অনুপস্থিত: প্রয়োজনীয় JAR বা .class ফাইল ক্লাসপথে নেই।
  • স্কোপ ইস্যু: ভেরিয়েবল ডিক্লেয়ার করা স্কোপের বাইরে থেকে অ্যাক্সেস করা হচ্ছে।

উদাহরণ: Scanner ইমপোর্ট না করা

public class ReadingdData {
    public static void main(String args[]) {
        System.out.println("Enter your name: ");
        Scanner sc = new Scanner(System.in); // Scanner ইমপোর্ট নেই
        String name = sc.next();
        System.out.println("Hello " + name);
    }
}

কম্পাইল টাইম এরর

ReadingdData.java:6: error: cannot find symbol
    Scanner sc = new Scanner(System.in);
    ^
symbol: class Scanner
location: class ReadingdData
2 errors

সমাধান

  1. সঠিক ইমপোর্ট যোগ করুন: import java.util.Scanner;
  2. ক্লাসপথ চেক করুন: এক্সটার্নাল JAR ফাইলগুলো ক্লাসপথে আছে কিনা নিশ্চিত করুন (-cp অপশন বা IDE সেটিংসে)।
  3. ফুলি কোয়ালিফাইড নাম ব্যবহার করুন: ইমপোর্ট ছাড়া java.util.Scanner sc = new java.util.Scanner(System.in); লিখলেও চলে।

সঠিক করা কোড

import java.util.Scanner; // ইমপোর্ট যোগ করা হয়েছে

public class ReadingdData {
    public static void main(String args[]) {
        System.out.println("Enter your name: ");
        Scanner sc = new Scanner(System.in);
        String name = sc.next();
        System.out.println("Hello " + name);
    }
}

আউটপুট

Enter your name: krishna
Hello krishna

টিপস: আধুনিক IDE (IntelliJ, Eclipse, VS Code) অটো-ইমপোর্ট সাজেশন দেয় (Alt+Enter / Ctrl+Shift+O), যা এই এরর দ্রুত ফিক্স করতে সাহায্য করে।

  1. জাভাতে Enum কি কোনো ক্লাস এক্সটেন্ড করতে পারে?

  2. জাভাতে JTextField-এ প্যাডিং যোগ করুন

  3. জাভাতে Cursor ক্লাসের গুরুত্ব

  4. জাভাতে Exception ক্লাস এবং Error ক্লাসের পার্থক্য