Compiler Error: cannot find symbol

The occurrence of "Cannot find symbol" errors commonly arises when attempting to reference an undeclared variable in the code. Such errors indicate that the compiler encounters an identifier or symbol that it cannot comprehend during the code compilation process. When the compiler scrutinizes the code, it endeavors to deduce the meaning of each identifier, and encountering an unknown symbol triggers the "Cannot find symbol" error, denoting that the compiler cannot determine the significance of the symbol or identifier in question.

During the compilation of your code, the compiler is responsible for interpreting the meaning of each identifier present in the code. As it processes the code, the compiler examines each identifier and determines the appropriate actions to be taken. The occurrence of a "Cannot find symbol" error is directly related to identifiers and signifies that Java is unable to comprehend the significance of the particular "symbol" or identifier in the code.

public class TestClass { public static void main(String[] args) { int x = 2; int y = 4; sum = x + y ; System.out.println(sum); } }
output error: cannot find symbol sum = x + y ; symbol: variable sum location: class TestClass error: cannot find symbol System.out.println(sum); symbol: variable sum location: class TestClass 2 errors

In the above code, the variable sum has not been declared, you need to tell the compiler what the type of sum is; for example:

int sum = x + y ;

The general causes for a Cannot find symbol error are things like:

  1. Incorrect spelling.
  2. Wrong case. Halo is different from halo.
  3. Improper use of acceptable identifier values (letters, numbers, underscore, dollar sign), my-class is not the same as myclass.
  4. No variable declaration or variable is outside of the scope you are referencing it in.


The "cannot find symbol" compiler error occurs when the compiler encounters an undeclared or unknown identifier in the code. This error indicates that Java cannot understand the meaning of the symbol or identifier being referenced, often due to missing declarations or typos in the code.