Create Software Components 

Using Java Level 2



Course Info




Java Demos





Debugging Tips

You will frequently be faced with inexplicable messages from the Java compiler and interpreter.  Don't pull your hair out, you gradually get to know what your compiler really means when it says weird things like "{ expected."

The sections below deal with;-

Dealing with Error Messages - techniques for finding the source of the problem

Compiler Error Messages - error messages you get when trying to compile source code to bytecode using the javac tool

Interpreter Errors Messages - error messages you get when trying to run your class code using the java tool.

Dealing with Error Messages

Sometimes one tiny little syntax error creates an avalanche of incomprehensible compiler error messages. Luckily, Java gives the source code line number along with any error message.  This means you must find the offending lines in your code and examine them for syntax errors.

First Rule: Examine the first error message and deal with that first. Don't try to figure out all the messages at once.  Think about any changes you have just made to your code..  Fix any errors and recompile.

Second Rule: If the error message does not make sense and you think the line that Javac is complaining about is perfect, then examine a few of the lines before that line for syntax errors. Fix any errors and recompile.

Third Rule:  On recompiling you may find other errors to deal with.

Most Important Rule Ever.  Every time you make a few changes to your code, COMPILE YOUR CODE to check for syntax errors. Unless you are a Java guru and can sit there happily typing in lots of error free code you WILL make syntax errors.  The more you make before compiling, the harder you will find it interpreting the heaps of complaints you are likely to get from the compiler.

Here are some simple techniques you should use when your programs don't work.


    Use Comments

 If you can't find a problem...

comment out single lines:-

// this line will not be executed.

comment out sections of code:-  that include the problem area:

none of these lines

will be executed


You can keep reducing or increasing the number of lines commented out until the problem line is found.


    Use System.out.println

System.out.println() is very useful for...

finding out the values of variables as your program is running. 

informing you that a particular line in your code has been reached.  This is especially good for determining which choice was made in selection statements (if-else statements and switch).

when testing a GUI or Applet, the System.out.println()is handy because the output is sent to the command console and so it does not interfere with the running of your program. 


Compiler Error Messages

If you see any compiler errors, then your program did not successfully compile, and the compiler did not create a .class file. Carefully verify your source code, fix any errors that you detect, and try again. Below are some common problems.


Can't Locate the Compiler

You may see the following error message if your path isn't set properly:

javac: Command not found

Modify your PATH environment variable so that it includes the directory where the Java compiler lives. Refer to Modifying Your Path


';' expected

If you mistype part of a program, the compiler may issue a syntax error. The message usually displays the type of the error, the line number where the error was detected, the code on that line, and the position of the error within the code. Here's an error caused by omitting a semicolon (;) at the end of a statement: `;' expected.
System.out.println("Hello World!")
1 error

If you get this type of error message, then check your source code and correct it.

'{' expected

Here we have another syntax error. Usually it means you put a semicolon where one was not supposed to be ahead of a {  

Or you have omitted a  {  

Check your source code and correct it.



Interpreter Error Messages

You may get error messages when trying to run your code either using the java utility or the appletviewer/browser


Can't Find the Class

A common error of beginner Java programmers  is to try to interpret the .class file created by the compiler. 

For example, if you try to interpret the file HelloWorld.class by typing

java HelloWorld.class

the interpreter displays this error message:

Can't find class HelloWorld.class

The argument to the Java interpreter is the name of the class that you want to use, not the filename. So in this case what should be typed in is:-

java HelloWorld

Exception in thread "main" 

There are a few different possible causes of the error message:-

Exception in thread "main" java.lang.NoClassDefFoundError: FileName

You may have forgotten to compile your .java source code into a .class file

e.g.. Here I have a source code file but I have forgotten to compile it to a class file. Typing in:-

java SoundExample

gives the error message 

Exception in thread "main" java.lang.NoClassDefFoundError: SoundExample


Exception in thread "main" 

Possibly the class name was incorrectly typed.

e.g.. Here I have a file SoundDocument.class with the class declared as SoundDocument.  Typing the following:-  

java sounddocument

gives an error

Exception in thread "main" java.lang.NoClassDefFoundError: sounddocument

Typing the following corrects the error

java SoundDocument



That it for the debugging tips folks!



  Site Home 

Java Home   


Course Info





Scheme of Work





Learning Center

Web Materials


Java Demos



Lecture Materials

Tutorials & Notes





Site Home


Unit Home

ADR 2002