什么会导致Java中找不到符号错误?

每当您需要在当前程序中使用外部类/接口(用户定义的或内置的)时,都需要使用import关键字将这些类导入当前程序中。

但是,在导入任何类时-

  • 如果您要导入的类/接口的路径对JVM不可用。

  • 如果您在import语句中提到的绝对类名不正确(包括包和类名)。

  • 如果已导入使用的类/接口。

您将看到一个异常提示“找不到符号……”。

示例

在下面的示例中,我们尝试从键盘(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关键字从包中导入所需的类。导入时,您需要指定所需类的绝对名称(包括软件包和子软件包)。

示例

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