Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

อะไรทำให้เกิดข้อผิดพลาด Cannot find symbol ใน java?


เมื่อใดก็ตามที่คุณต้องการใช้คลาส/อินเทอร์เฟซภายนอก (ทั้งที่ผู้ใช้กำหนดหรือในตัว) ในโปรแกรมปัจจุบัน คุณจะต้องนำเข้าคลาสเหล่านั้นในโปรแกรมปัจจุบันของคุณโดยใช้คีย์เวิร์ดการอิมพอร์ต

แต่ในขณะที่นำเข้าคลาสใด ๆ −

  • หากเส้นทางของคลาส/อินเทอร์เฟซที่คุณกำลังนำเข้าไม่พร้อมใช้งานสำหรับ JVM

  • หากชื่อคลาสสัมบูรณ์ที่คุณระบุไว้ในคำสั่งนำเข้าไม่ถูกต้อง (รวมถึงแพ็คเกจและชื่อคลาส)

  • หากคุณนำเข้าคลาส/อินเทอร์เฟซที่ใช้

คุณจะได้รับข้อยกเว้นว่า “ไม่พบสัญลักษณ์ ……”

ตัวอย่าง

ในตัวอย่างต่อไปนี้ เรากำลังพยายามอ่านค่าสตริงที่แสดงชื่อของผู้ใช้จากแป้นพิมพ์ (System.in) สำหรับสิ่งนี้ เรากำลังใช้คลาสสแกนเนอร์ของ Java.Util แพ็คเกจ

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);
   }
}

ข้อผิดพลาดในการคอมไพล์

เนื่องจากเราใช้คลาสที่ชื่อว่า Scanner ในโปรแกรมของเราและไม่ได้นำเข้ามาในโปรแกรมของเรา ในการดำเนินการ โปรแกรมนี้สร้างข้อผิดพลาดเวลาคอมไพล์ดังต่อไปนี้ -

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

วิธีแก้ปัญหา

  • คุณต้องตั้งค่าพาธของคลาสสำหรับไฟล์ JAR ที่มีอินเตอร์เฟสคลาสที่จำเป็น

  • นำเข้าคลาสที่ต้องการจากแพ็คเกจโดยใช้ นำเข้า คำสำคัญ. ขณะนำเข้า คุณต้องระบุชื่อที่แน่นอน (รวมถึงแพ็คเกจและแพ็คเกจย่อย) ของคลาสที่ต้องการ

ตัวอย่าง

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