Java Methods Home Page | Skylight Publishing |
Exception in thread "main" java.lang.NoClassDefFoundError: hello (wrong name: Hello) This run-time error (exception) happens when you mistype
a lower case letter for upper case.
Normally a class name (e.g., javac hello.javawill compile the file Hello.java , but when you try to
run it, as above, it reports an exception. It should be:
C:\mywork>java Hello
Exception in thread "main" java.lang.NoClassDefFoundError: Hello/java or
Exception in thread "main" java.lang.NoClassDefFoundError: Hello/class The command to run the Java interpreter should use the class name but should not include any extension, neither
Exception in thread "main" java.lang.NoSuchMethodError: main This exception may be reported when the main method is missing or its signature is incorrect. The correct signature is public static void main (String[] args)Possible mistakes: private static void main (String[] args) public void main (String[] args) public static int main (String[] args) public static void main (String args)
class Hello is public, should be declared in a file named Hello.java public class Hello ^ The source file name is different from the name of the class defined in the file. Here the file name is cannot return a value from method whose result type is void return 0; ^ In Java, non-static method printMsg(java.lang.String) cannot be referenced from a static context printMsg(s); ^ The method public void printMsg(String msg)should be: public static void printMsg(String msg)Since main is a static method and it calls printMsg with no "something-dot" prefix, printMsg is assumed to be another static method of the same class.
cannot find symbol symbol : class EasySound location: class Hello EasySound console = new EasySound(); ^ Unless installed as a package and properly imported, files for classes used in the program (in this case This error message may also show up when a library class is not imported. For example: cannot find symbol symbol : class Scanner location: class Hello Scanner kboard = new Scanner(System.in); ^You need import java.util.Scanner;at the top of your program. Another possible reason for this error message is incorrect or misspelled primitive data type name. For example: private bool match(String word, int row, int col, int rowStep, int colStep)gives cannot find symbol symbol : class bool location: class WordSearch private bool match(String word, int row, int col, int rowStep, int colStep) ^It should be boolean .
cannot find symbol symbol : method PrintMsg(java.lang.String) location: class Hello PrintMsg(s); ^ This error occurs when a method is called incorrectly: either its name is misspelled (or upper-lower case is misplaced), or a method is called with wrong types of parameters, or a method is called for a wrong type of object or a wrong class. For example, the same error, will be reported if you write System.println("Hello");instead of System.out.println("Hello");Another example: cannot find symbol symbol : method println(java.lang.String,java.lang.String) location: class java.io.PrintStream System.out.println("You entered: ", msg); ^Here a comma is used instead of a + in the println call. This makes it a call with two parameters instead of one and no println method exists that takes
two String parameters.
cannot find symbol symbol : variable i location: class java.lang.String for (i = 0; i < n; i++)) ^ A very common error, for (int i = 0; i < n; i++) '}' expected } ^ An extra opening brace or a missing closing brace may produce several errors, including illegal start of expression public static void printMsg(String msg) ^ ';' expected } ^and finally '}' expected } ^which may be reported at the end of the file. 'class' or 'interface' expected } ^ This error often results from an extra closing brace (or a missing opening brace). illegal character: \8220 System.out.println(ôHello Worldö); ^ "Smart quote" characters accidentally left in the source file by a word processor instead of straight single or double quotes may cause this error. The same error is reported when the source file contains any non-ASCII character in the code (outside comments). <identifier> expected static x; ^
static <someType> x;The same happens here: private myRows, myCols;It gives an error: <identifier> expected private myRows, myCols; ^thinking that myRows is a data type.
Same here:
public static void printMsg(msg) { ... }- a missing type designator (e.g., String ) in a method's header produces four rather obscure errors:
<identifier> expected public static void printMsg(msg) ^ ')' expected } ^ cannot find symbol symbol : class msg location: class Hello public static void printMsg(msg) ^ missing method body, or declare abstract public static void printMsg(msg) ^ 4 errorsIt should be: public static void printMsg(String msg) '(' or '[' expected EasyReader inp = new EasyReader; ^ Should be: EasyReader inp = new EasyReader(); variable inp might not have been initialized s = inp.readLine(); ^ This error happens if you use a local variable before initializing it. EasyReader inp;declares a variable but you need to initialize it with new .
')' expected System.out.print(Enter a message: "); ^ unclosed string literal System.out.print(Enter a message: "); ^ cannot find symbol symbol : variable Enter location: class Hello System.out.print(Enter a message: "); ^ 3 errors A missing opening double quote in a literal string produces these three errors. missing return statement { ^ A method, other than ';' expected System.out.println("Message: " + msg) ^ A few compiler error messages are actually self-explanatory. incompatible types found : int required: boolean if (i = n) ^ It is supposed to be if (i == n)Single = makes it assignment operator. It returns an int value that can't be tested in if .
Similarly,
return row = 0 && row < myRows && col >= 0 && col < myCols;gives two errors: incompatible types found : int required: boolean return row = 0 && row < myRows && col >= 0 && col < myCols; ^ operator && cannot be applied to int,boolean return row = 0 && row < myRows && col >= 0 && col < myCols; ^ 2 errorsAn extraneous space between ! and = in an != operator may give several errors, including "incompatible types":
')' expected if (s ! = null) ^ illegal start of expression } ^ ';' expected } ^ incompatible types found : java.lang.String required: boolean if (s ! = null) ^ 4 errorsAnother situation with "incompatible types" is when a literal string is used in place of a char constant or vice-versa. For example:
incompatible types found : java.lang.String required: char grid[r][c] = "*"; ^Should be grid[r][c] = '*'; '[' expected grid = new char(rows, cols); ^ An array should be created using brackets, not parentheses. array required, but java.lang.String found grid[r][c] = Character.toUpperCase(letters[i]); ^ Use possible loss of precision found : double required: int x = 3.5; ^ This happens when a '.class' expected double y = double(x); ^ unexpected type required: value found : class double y = double(x); ^ 2 errors Incorrect cast syntax causes this error. Should be double y = (double)x; actionPerformed(java.awt.event.ActionEvent) in Test cannot implement actionPerformed(java.awt.event.ActionEvent) in java.awt.event.ActionListener; attempting to assign weaker access privileges; was public public class Test extends JApplet ^ 1 errorThis error is reported when the keyword public is missing in the actionPerformed method's header.
call to super must be first statement in constructor super("Hello"); ^ 1 errorThis error is reported when the call super is not the
first statement in a constructor or if it is in a method.
In particular, this happens when you accidentally put void
in a constructor's header.
invalid method declaration; return type required public hello() // Constructor ^ 1 errorThis error is reported when a constructor's name is misspelled or is different from the name of the class. The compiler then thinks it is a method with a missing return type. It can also happen if indeed a return type is missing in a method header. Hello is not abstract and does not override abstract method compareTo(Hello) in java.lang.Comparable public class Hello extends JFrame ^ 1 errorThis error is reported when a class implements an interface (in this case Comparable ) but does not supply
all the necessary methods or misspells a method name, or has the
the wrong number or types of parameters in one
of the interface methods.
|
Skylight Publishing
support@skylit.com