FIX: NoClassDefFoundError When a Valid Class Definition Exists (177754)



The information in this article applies to:

  • Microsoft Internet Explorer 4.0 for Windows NT 4.0
  • Microsoft Internet Explorer 4.0 for Windows 95
  • Microsoft SDK for Java 2.0

This article was previously published under Q177754
NOTE: The information in this article applies specifically to version 4.79.2252 of the Microsoft virtual machine, which is included in the products listed at the beginning of this article.

SYMPTOMS

A Java applet or program that attempts to load certain valid Java classes may fail with a NoClassDefFoundError exception.

If the applet is running inside Internet Explorer, there may be no visible symptoms, except that the applet does not run properly. If Java Logging is enabled in Internet Explorer. However, the file Javalog.txt file, created in the Java subdirectory of the Windows directory, contains a log of the exception and a call stack. Here is a typical example of the exception:
java.lang.NoClassDefFoundError: COM/objectspace/jgl/HashMap

CAUSE

The Microsoft virtual machine verifies that the .class file that defines each Java class is valid before loading it. Version 4.79.2252 erroneously decides that certain .class files are not valid, and therefore, fails to load them. When it fails to find a valid definition for a class, the Microsoft virtual machine throws a NoClassDefFoundError exception.

RESOLUTION

Download and install the current Microsoft virtual machine. For more information, visit the following Microsoft Web site:

STATUS

Microsoft has confirmed that this is a bug in the Microsoft products that are listed at the beginning of this article. This bug was corrected in Microsoft virtual machine, version 4.79.2334 and later.

MORE INFORMATION

One class that the Microsoft virtual machine fails to validate is the HashMap class from ObjectSpace's JGL class library. It is possible to produce other .class files that the Microsoft virtual machine will fail to validate using a Java compiler, including Microsoft's Visual J++ or SDK 2.0 for Java.

Steps to Reproduce Behavior

If you have JGL and SDK 2.0 for Java, the following program will exhibit this bug:
import COM.objectspace.jgl.*;
public class HashMapTest
{

   public static void main (String args[])
   {
      HashMap    hm = new HashMap();
   }

}
				
Version 4.79.2252 of the Microsoft virtual machine throws a NoClassDefFoundError. Version 4.79.2334 of the Microsoft virtual machine executes this with no errors.

REFERENCES

JGL is manufactured by ObjectSpace, Inc. The third-party products that are discussed in this article are manufactured by companies that are independent of Microsoft. Microsoft makes no warranty, implied or otherwise, regarding the performance or reliability of these products.
Further information about JGL can be found at the following Web site: For support information about Visual J++ and the SDK for Java, visit the following Microsoft Web site:

Modification Type:MajorLast Reviewed:6/14/2006
Keywords:kb3rdparty kbbug kbfix KB177754