Currently, when the VM throws a NoClassDefFoundError, the details of the causative ClassNotFoundException are lost (only the detail message is preserved). NoClassDefFoundError should be retrofitted with a new constructor that takes a cause (Throwable) and passes it up to Error(Throwable). The VM should use this constructor when it throws a NoClassDefFoundError as a result of a ClassNotFoundException. This will provide a more informative stack trace. In particular, it will indicate which ClassLoader failed to find the class.