Lỗi "cannot find symbol" xảy ra chủ yếu khi chúng ta cố gắng tham chiếu đến một biến chưa được khai báo trong chương trình đang biên dịch, có nghĩa là trình biên dịch không biết biến mà chúng ta đang tham chiếu.
Một số nguyên nhân có thể gây ra lỗi "Cannot find symbol"
- Sử dụng biến chưa được khai báo hoặc nằm ngoài phạm vi code.
- Sử dụng sai chữ hoa/chữ thường ("tutorials" và "Tutorials" khác nhau) hoặc lỗi chính tả.
- Lớp trong package chưa được tham chiếu đúng cách bằng khai báo import.
- Sử dụng giá trị định danh không hợp lệ như chữ cái, số, gạch dưới và dấu dollar. hello-class khác với helloclass.
Ví dụ
public class CannotFindSymbolTest {
public static void main(String[] args) {
int n1 = 10;
int n2 = 20;
sum = n1 + n2;
System.out.println(sum);
}
}
Kết quả
CannotFindSymbolTest.java:5: error: cannot find symbol sum = n1 + n2; ^ symbol: variable sum location: class CannotFindSymbolTest CannotFindSymbolTest.java:7: error: cannot find symbol System.out.println(sum); ^ symbol: variable sum location: class CannotFindSymbolTest
Trong chương trình trên, lỗi "Cannot find symbol" xảy ra vì "sum" chưa được khai báo. Để khắc phục lỗi, chúng ta cần định nghĩa "int sum = n1+n2" trước khi sử dụng biến sum.