如何修复 Java 中的 'cannot find symbol'

问题:

你想编译一些 Java 源代码(例如使用 Maven),但你收到类似这样的错误消息

java_compile_error.txt
[ERROR] /home/user/myproject/src/main/java/com/mydomain/myproject/Main.java:[123,40] cannot find symbol
[ERROR] symbol: class MyClass

解决方案

Java 不知道在哪里找到 MyClass

首先,检查你是否正确导入了 MyClass

如果 MyClass 可以在你的库中找到,你很可能在错误发生的文件顶部缺少导入语句。

另一方面,如果 MyClass 是从外部库导入的,检查:

如果你不知道在哪个库中可以找到某个符号,请参见我们的文章[待完成]。

‘符号’到底是什么?

符号的概念和术语在许多不同的编程语言中使用。 基本上它意味着*‘一个名称,引用在其他地方更详细声明的某些内容’。*

因此,如果你遇到类似*‘cannot find symbol’的错误消息,编译器试图告诉你:“我不知道那个名称引用什么”*。

示例:

当你在 Java 中声明一个类时,例如

MyClass.java
class MyClass {
    /* 你的代码放在这里! */
}

你以后可以通过其名称 MyClass 引用该类,例如在

UseMyClass.java
MyClass class = new MyClass();

在该行代码中,MyClass 被符号化使用以引用我们之前列出的完整类声明(class MyClass { /* ... */})。

因此,MyClass 被用作符号来引用你之前(完整)的 MyClass 声明。

但是,如果名称 MyClass 没有关联的完整声明,编译器会告诉你 ‘cannot find symbol’


Check out similar posts by category: Java