Fixes bug libgcj/8170
Fixes bug libgcj/8170 * java/lang/ClassLoader.java (loadClass): Don't rewrap ClassNotFoundException. * gnu/java/lang/MainThread.java (run): Chain NoClassDefFoundError. * gnu/gcj/runtime/NameFinder.java (remove_interpreter): Removed. (remove_internal): New field superceding remove_interpreter. (sanitizeStack): Remove all no-package classes starting with "_Jv_". Remove no-class methods starting with "_Jv_". And Replace null class or method names with the empty string. Stop at either the MainThread or a real Thread run() method. (newElement): Made static. * java/net/URLClassLoader.java (findClass): Throw ClassNotFoundExceptions including urls, plus parent using toString(). (thisString): New field. (toString): New method. From-SVN: r94935
This commit is contained in:
parent
8ad833acc4
commit
0008978072
5 changed files with 110 additions and 43 deletions
|
@ -1,5 +1,6 @@
|
|||
/* URLClassLoader.java -- ClassLoader that loads classes from one or more URLs
|
||||
Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
|
||||
Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
|
@ -958,7 +959,7 @@ public class URLClassLoader extends SecureClassLoader
|
|||
resource = loader.getResource(resourceName);
|
||||
}
|
||||
if (resource == null)
|
||||
throw new ClassNotFoundException(className + " not found in " + urls);
|
||||
throw new ClassNotFoundException(className + " not found in " + this);
|
||||
|
||||
// Try to read the class data, create the CodeSource, Package and
|
||||
// construct the class (and watch out for those nasty IOExceptions)
|
||||
|
@ -1039,9 +1040,43 @@ public class URLClassLoader extends SecureClassLoader
|
|||
}
|
||||
catch (IOException ioe)
|
||||
{
|
||||
throw new ClassNotFoundException(className, ioe);
|
||||
ClassNotFoundException cnfe;
|
||||
cnfe = new ClassNotFoundException(className + " not found in " + this);
|
||||
cnfe.initCause(ioe);
|
||||
throw cnfe;
|
||||
}
|
||||
}
|
||||
|
||||
// Cached String representation of this URLClassLoader
|
||||
private String thisString;
|
||||
|
||||
/**
|
||||
* Returns a String representation of this URLClassLoader giving the
|
||||
* actual Class name, the URLs that are searched and the parent
|
||||
* ClassLoader.
|
||||
*/
|
||||
public String toString()
|
||||
{
|
||||
if (thisString == null)
|
||||
{
|
||||
StringBuffer sb = new StringBuffer();
|
||||
sb.append(this.getClass().getName());
|
||||
sb.append("{urls=[" );
|
||||
URL[] thisURLs = getURLs();
|
||||
for (int i = 0; i < thisURLs.length; i++)
|
||||
{
|
||||
sb.append(thisURLs[i]);
|
||||
if (i < thisURLs.length - 1)
|
||||
sb.append(',');
|
||||
}
|
||||
sb.append(']');
|
||||
sb.append(", parent=");
|
||||
sb.append(getParent());
|
||||
sb.append('}');
|
||||
thisString = sb.toString();
|
||||
}
|
||||
return thisString;
|
||||
}
|
||||
|
||||
/**
|
||||
* Finds the first occurrence of a resource that can be found. The locations
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue