diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 203230b6bd3e709be331da15fdf026e234d2ac3c..c07140dd41219351be322bd563fc45662d53a575 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,9 @@
+2002-12-12  Mark Wielaard  <mark@klomp.org>
+
+	* java/lang/ClassLoader.java (resolveClass0): Transform
+	ClassNotFoundException to NoClassDefFoundError. Transform all other
+	throwables to LinkageError.
+
 2002-12-11  Tom Tromey  <tromey@redhat.com>
 
 	* java/lang/ClassLoader.java (findLoadedClass): Now synchronized.
diff --git a/libjava/java/lang/ClassLoader.java b/libjava/java/lang/ClassLoader.java
index 99acac68bb5c5512bf7234362262263cd65a3b40..033b2cc4a6e7febeca52ebc2365cee781c615a82 100644
--- a/libjava/java/lang/ClassLoader.java
+++ b/libjava/java/lang/ClassLoader.java
@@ -535,16 +535,22 @@ public abstract class ClassLoader
 	  {
 	    markClassErrorState0 (clazz);
 
-	    if (x instanceof Error)
-	      throw (Error)x;
+	    LinkageError e;
+	    if (x instanceof LinkageError)
+	      e = (LinkageError)x;
+	    else if (x instanceof ClassNotFoundException)
+	      {
+		e = new NoClassDefFoundError("while resolving class: "
+					     + clazz.getName());
+		e.initCause (x);
+	      }
 	    else
 	      {
-		InternalError e
-		  = new InternalError ("unexpected exception during linking: "
-				       + clazz.getName());
+		e = new LinkageError ("unexpected exception during linking: "
+				      + clazz.getName());
 		e.initCause (x);
-		throw e;
 	      }
+	    throw e;
 	  }
       }
   }