<< Chapter < Page Chapter >> Page >

not a statement

This error occurs when a syntactically correct statement does not appear where it should. Examples:

  • Writing an assignment statement without the assignment operator: max ;          // Error, missing = Eclipse: Syntax error, insert "AssignmentOperator Expression"    to complete Expression
  • Misspelling else : if (i > j)   max = i;els ;          // Error, else not spelled correctly The reason you do not get “else expected” is that you need not write an else alternative so this just looks like a bad statement.

    Eclipse:
    els cannot be resolved

    Syntax error, insert "AssignmentOperator Expression" to complete Expression
    The same identifier can be used in different methods and classes. An important task of the compiler is to resolve the ambiguity of multiple uses of the same identifer; for example, if a variable is declared both directly within a class and also withina method, the use of its unqualified name is resolved in favor of the local variable. This error message simply means that the compiler could not obtain an(unambiguous) meaning for the identifier els .
  • The following code: if (i > j)   max = i;els           // Error, else not spelled correctly   max = j; results in a weird error message: x.java:6: cannot find symbol symbol  : class elslocation: class x els The reason is that the compiler interprets this as a declaration: els max = j; and can't find a class els as the type of the variable max .
    Eclipse: Duplicate local variable max els cannot be resolved to a type These messages are more helpful: first, the use of the word type instead of class is more exact because the type of a variable need not be a class (it could be a primitive type or interface);second, the message about the duplicate variable gives an extra clue as to the source of the error.
  • The error can also be caused by attempting to declare a variable whose name is that of a reserved keyword: void f() {   int default = 10;} Eclipse: Syntax error on token "default", invalid VariableDeclaratorId

cannot find symbol

This is probably the most common compile-time error. All identifiers in Java must be declared before being used and an inconsistency between the declarationof an identifier and its use will give rise to this error. Carefully check the spelling of the identifier. It is easy to make a mistake by using a lower-case letter instead of an upper case one, or to confuse the letter O withthe numeral 0 and the letter l with the numeral 1.

Other sources of this error are: calling a constructor with an incorrect parameter signature, andusing an identifier outside its scope, for example, using an identifier declared in a for -loop outside the loop:

int[] a = {1, 2, 3};int sum = 0; for (int i = 0; i < a.length; i++)   sum = sum + a[i]; System.out.println("Last = " + i);        // Error, i not in scope

Eclipse: ... cannot be resolved

... is already defined in ...

An identifier can only be declared once in the same scope:

int sum = 0; double sum = 0.0;   // Error, sum already defined

Eclipse: Duplicate local variable sum

array required but ... found

This error is caused by attempting to index a variable which is not an array.

int max(int i, int j) {   if (i > j) return i;   else return j[i];              // Error, j is not an array }

Eclipse: The type of the expression must be an array type but it resolved to int

... has private access in ...

It is illegal to access a variable declared private outside its class.

Eclipse: The field ... is not visible

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Compile and runtime errors in java. OpenStax CNX. Dec 28, 2009 Download for free at http://cnx.org/content/col10913/1.2
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Compile and runtime errors in java' conversation and receive update notifications?

Ask